Linked list
In computer science, a linked list is a data structure consisting of a group of nodes which together represent a sequence. Under the simplest form, each node is composed of a data and a reference (in other words, a link) to the next node in the sequence; more complex variants add additional links. This structure allows for efficient insertion or removal of elements from any position in the sequence.Linked List Implementation In Java
1. Insert at The end of the list
2. get size of list
3. print content of list
4.add element at the end
5. add element at specified position
6. remove element at index
Output
----------Size of list---------------
4
----------Content of list----------------
[ 1 ][ 2 ][ 3 ][ 4 ]
----------get element of list-----------------
2
----------remove element from list-----------
true
----------Content of list----------------
[ 1 ][ 3 ][ 4 ]
---add new element to specified position----
----------Content of list----------------
[ 1 ][ M ][ 3 ][ 4 ]
CODE
/**
* 1. Insert at The end of the list. 2. get size of list 3. print content of
* list 4.add element at the end 5. add element at specified position 6. remove
* element at index
*
* Note: The link object doesn't contain the another link object Next Link is
* actually a reference to another link
*
* @author RaviKantSoni[12-August-2013]
*
*/
public class testSingleLinkedList {
public static void main(String[] args) {
SingleLinkedList linkedList = new SingleLinkedList();
linkedList.add("1");
linkedList.add("2");
linkedList.add("3");
linkedList.add("4");
System.out.println("----------Size of list---------------");
System.out.println(linkedList.size());
System.out.println("----------Content of list----------------");
System.out.println(linkedList.toString());
System.out.println("----------get element of list-----------------");
System.out.println(linkedList.get(2));
System.out.println("----------remove element from list-----------");
System.out.println(linkedList.remove(2));
System.out.println("----------Content of list----------------");
System.out.println(linkedList.toString());
System.out.println("---add new element to specified position----");
linkedList.add("M", 2);
System.out.println("----------Content of list----------------");
System.out.println(linkedList.toString());
}
}
class SingleLinkedList {
// reference to Head Node
private Node head;
private int listCount;
// LinkedList Constructor
public SingleLinkedList() {
// this is empty list so the reference to the head node is set to a new
// node with no data
head = new Node(null);
listCount = 0;
}
// add new element to the end of the list
public void add(String data) {
Node temp = new Node(data);
Node current = head;
// starting at the head node, crawl to the end of the list
while (current.getNext() != null) {
current = current.getNext();
}
// the last node's next reference set to new node
current.setNext(temp);
listCount++;
}
// to print content of list
public String toString() {
Node current = head.getNext();
String outPut = "";
while (current != null) {
outPut = outPut + "[ " + current.getData() + " ]";
current = current.getNext();
}
return outPut;
}
// to get size of the list
public int size() {
return listCount;
}
// returns the element at the specified position in this list
// here we are returning object from the list
public Object get(int index) {
// index should be 1 or more
if (index <= 0) {
return null;
}
Node element = head.getNext();
for (int i = 1; i < index; i++) {
if (element.getNext() == null)
return null;
element = element.getNext();
}
return element.getData();
}
// remove the element at specific position in the list\
public boolean remove(int index) {
// if index is out of range, exist
if (index < 1 || index > size())
return false;
Node current = head;
for (int i = 1; i < index; i++) {
if (current.getNext() == null)
return false;
current = current.getNext();
}
current.setNext(current.getNext().getNext());
listCount--;
return true;
}
// insert specified element at specified position in the list
public void add(String data, int index) {
// insert to requested index or to last in this list, which ever come
// first
Node current = head;
Node temp = new Node(data);
for (int i = 1; i < index && current.getNext() != null; i++) {
current = current.getNext();
}
temp.setNext(current.getNext());
current.setNext(temp);
listCount++;
}
static class Node {
private Node next;
private String data;
Node(String data) {
this.data = data;
}
public String toString() {
return this.data;
}
public Node(String data, Node node) {
this.data = data;
this.next = node;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
}
* 1. Insert at The end of the list. 2. get size of list 3. print content of
* list 4.add element at the end 5. add element at specified position 6. remove
* element at index
*
* Note: The link object doesn't contain the another link object Next Link is
* actually a reference to another link
*
* @author RaviKantSoni[12-August-2013]
*
*/
public class testSingleLinkedList {
public static void main(String[] args) {
SingleLinkedList linkedList = new SingleLinkedList();
linkedList.add("1");
linkedList.add("2");
linkedList.add("3");
linkedList.add("4");
System.out.println("----------Size of list---------------");
System.out.println(linkedList.size());
System.out.println("----------Content of list----------------");
System.out.println(linkedList.toString());
System.out.println("----------get element of list-----------------");
System.out.println(linkedList.get(2));
System.out.println("----------remove element from list-----------");
System.out.println(linkedList.remove(2));
System.out.println("----------Content of list----------------");
System.out.println(linkedList.toString());
System.out.println("---add new element to specified position----");
linkedList.add("M", 2);
System.out.println("----------Content of list----------------");
System.out.println(linkedList.toString());
}
}
class SingleLinkedList {
// reference to Head Node
private Node head;
private int listCount;
// LinkedList Constructor
public SingleLinkedList() {
// this is empty list so the reference to the head node is set to a new
// node with no data
head = new Node(null);
listCount = 0;
}
// add new element to the end of the list
public void add(String data) {
Node temp = new Node(data);
Node current = head;
// starting at the head node, crawl to the end of the list
while (current.getNext() != null) {
current = current.getNext();
}
// the last node's next reference set to new node
current.setNext(temp);
listCount++;
}
// to print content of list
public String toString() {
Node current = head.getNext();
String outPut = "";
while (current != null) {
outPut = outPut + "[ " + current.getData() + " ]";
current = current.getNext();
}
return outPut;
}
// to get size of the list
public int size() {
return listCount;
}
// returns the element at the specified position in this list
// here we are returning object from the list
public Object get(int index) {
// index should be 1 or more
if (index <= 0) {
return null;
}
Node element = head.getNext();
for (int i = 1; i < index; i++) {
if (element.getNext() == null)
return null;
element = element.getNext();
}
return element.getData();
}
// remove the element at specific position in the list\
public boolean remove(int index) {
// if index is out of range, exist
if (index < 1 || index > size())
return false;
Node current = head;
for (int i = 1; i < index; i++) {
if (current.getNext() == null)
return false;
current = current.getNext();
}
current.setNext(current.getNext().getNext());
listCount--;
return true;
}
// insert specified element at specified position in the list
public void add(String data, int index) {
// insert to requested index or to last in this list, which ever come
// first
Node current = head;
Node temp = new Node(data);
for (int i = 1; i < index && current.getNext() != null; i++) {
current = current.getNext();
}
temp.setNext(current.getNext());
current.setNext(temp);
listCount++;
}
static class Node {
private Node next;
private String data;
Node(String data) {
this.data = data;
}
public String toString() {
return this.data;
}
public Node(String data, Node node) {
this.data = data;
this.next = node;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
}
No comments:
Post a Comment