1 public class LinkedList {
2
3 private Node header=null;
4 private Node tail=null;
5
6 /**
7 * @param data
8 */
9 public void add(int data){
10 if(header==null){
11 Node newnode=new Node();
12 newnode.setData(data);
13 newnode.setNext(null);
14 header=newnode;
15 tail=newnode;
16 }
17 else{
18 Node newnode=new Node();
19 newnode.setData(data);
20 newnode.setNext(null);
21 tail.setNext(newnode);
22 tail=tail.next;
23 }
24 }
25
26 public void delete(int data){
27 Node temp=header;
28 if(temp.getNext()!=null){
29 while(temp.getNext().getData()!=data){
30 temp=temp.getNext();
31 }
32 temp.setNext(temp.getNext().getNext());
33 }
34 }
35
36 public void traverse(){
37 Node temp=header;
38 while(temp.getNext()!=null){
39 temp=temp.getNext();
40 System.out.print(temp.getData()+" ");
41 }
42 System.out.println();
43 }
44
45 public void reverse(){
46 Node head=header.getNext();
47 if(head != null){
48 Node prev=head;
49 Node current=prev.getNext();
50 while(current.getNext()!=null){
51 Node next=current.getNext();
52 current.setNext(prev);
53 prev=current;
54 current=next;
55 }
56 Node temp=this.header;
57 temp.setNext(current);
58 current.setNext(prev);
59 head.setNext(null);
60 }
61
62 }
63
64
65 private class Node{
66 int data;
67 Node next;
68 public Node(){
69 data=0;
70 next=null;
71 }
72 public int getData(){
73 return data;
74 }
75 public void setData(int data){
76 this.data=data;
77 }
78 public Node getNext(){
79 return next;
80 }
81 public void setNext(Node next){
82 this.next=next;
83 }
84 }
85
86 public static void main(String[] args) {
87 LinkedList linkList=new LinkedList();
88 for(int i=0;i<10;i++){
89 linkList.add(i);
90 }
91 linkList.traverse();
92 linkList.delete(5);
93 linkList.traverse();
94 linkList.reverse();
95 linkList.traverse();
96
97 }
98
99 }