fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4. class list<T>
  5. {
  6. node head;
  7. node tail;
  8. public int size;
  9. class node
  10. {
  11. T data;
  12. node next;
  13. node(T d)
  14. {
  15. data=d;
  16. next=null;
  17. }
  18. }
  19.  
  20. list()
  21. {
  22. head=null;
  23. tail=null;
  24. size=0;
  25. }
  26. public void add_tail(T d)
  27. {
  28. node newnode=new node(d);
  29. if(head==null)
  30. {
  31. head=newnode;
  32. tail=newnode;
  33. }
  34. else
  35. {
  36. tail.next=newnode;
  37. tail=newnode;
  38. }
  39. size++;
  40. }
  41.  
  42. public void add_head(T d)
  43. {
  44. node newnode=new node(d);
  45. if(head==null)
  46. {
  47. head=newnode;
  48. tail=newnode;
  49. }
  50. else
  51. {
  52. newnode.next=head;
  53. head=newnode;
  54. }
  55. size++;
  56. }
  57.  
  58. public void add(int p,T d)
  59. {
  60.  
  61. if(p<0 || p>size)
  62. {
  63. System.out.println("wrong position");
  64. return;
  65. }
  66. if (head==null || p==0)
  67. add_head(d);
  68. else if(p==size)
  69. add_tail(d);
  70. else
  71. {
  72. node newnode=new node(d);
  73. node pred=head;
  74. node succ=head;
  75. while(p>0)
  76. {
  77. pred=succ;
  78. succ=succ.next;
  79. p--;
  80. }
  81. pred.next=newnode;
  82. newnode.next=succ;
  83. size++;
  84. }
  85. }
  86. void print()
  87. {
  88. node n=head;
  89. while(n!=null)
  90. {
  91. System.out.print(n.data+" ");
  92. n=n.next;
  93. }
  94. System.out.println();
  95. }
  96.  
  97. void del_head()
  98. {
  99. node t;
  100. if(tail==head)
  101. {
  102. head=tail=null;
  103. size=0;
  104. }
  105. else
  106. {
  107. t=head;
  108. head=head.next;
  109. t.next=null;
  110. t=null;
  111. size--;
  112. }
  113. }
  114. void del_tail()
  115. {
  116. node t;
  117. if(tail==head)
  118. {
  119. head=tail=null;
  120. size=0;
  121. }
  122. else
  123. {
  124. node pred,succ;
  125. pred=succ=head;
  126. while(succ.next!=null)
  127. {
  128. pred=succ;
  129. succ=succ.next;
  130. }
  131. pred.next=null;
  132. tail=pred;
  133. succ=null;
  134. size--;
  135.  
  136. }
  137. }
  138. public void del(int p)
  139. {
  140.  
  141. if(p<0 || p>size-1)
  142. {
  143. System.out.println("wrong position");
  144. return;
  145. }
  146. if (p==0)
  147. del_head();
  148. else if(p==size-1)
  149. del_tail();
  150. else
  151. {
  152. node pred=head;
  153. node succ=head;
  154. while(p>0)
  155. {
  156. pred=succ;
  157. succ=succ.next;
  158. p--;
  159. }
  160. pred.next=succ.next;
  161. succ.next=null;
  162. succ=null;
  163. size--;
  164. }
  165. }
  166. }
  167.  
  168. class Ideone
  169. {
  170. public static void main(String argv[])
  171. {
  172. list<Integer> l=new list<Integer>();
  173. l.add_head(1);
  174. l.add_head(2);
  175. l.add_tail(3);
  176. l.add_tail(4);
  177. l.add(2,5);
  178. l.print();
  179. l.del_head();
  180. l.print();
  181. l.del_tail();
  182. l.print();
  183. l.del(2);
  184. l.add(2,7);
  185. l.print();
  186.  
  187. }
  188. }
  189.  
Success #stdin #stdout 0.16s 50000KB
stdin
Standard input is empty
stdout
2 1 5 3 4 
1 5 3 4 
1 5 3 
1 5 7