Advertisement
Guest User

adsasd

a guest
Feb 22nd, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.01 KB | None | 0 0
  1.  
  2.  
  3. import java.util.Scanner;
  4.  
  5. class Node
  6. {
  7. protected int data;
  8. protected Node next, prev;
  9.  
  10. /* Constructor */
  11. public Node()
  12. {
  13. next = null;
  14. prev = null;
  15. data = 0;
  16. }
  17. /* Constructor */
  18. public Node(int d, Node n, Node p)
  19. {
  20. data = d;
  21. next = n;
  22. prev = p;
  23. }
  24. /* Function to set link to next node */
  25. public void setLinkNext(Node n)
  26. {
  27. next = n;
  28. }
  29. /* Function to set link to previous node */
  30. public void setLinkPrev(Node p)
  31. {
  32. prev = p;
  33. }
  34. /* Funtion to get link to next node */
  35. public Node getLinkNext()
  36. {
  37. return next;
  38. }
  39. /* Function to get link to previous node */
  40. public Node getLinkPrev()
  41. {
  42. return prev;
  43. }
  44. /* Function to set data to node */
  45. public void setData(int d)
  46. {
  47. data = d;
  48. }
  49. /* Function to get data from node */
  50. public int getData()
  51. {
  52. return data;
  53. }
  54. }
  55.  
  56. /* Class linkedList */
  57. class linkedList
  58. {
  59. protected Node start;
  60. protected Node end ;
  61. public int size;
  62.  
  63. /* Constructor */
  64. public linkedList()
  65. {
  66. start = null;
  67. end = null;
  68. size = 0;
  69. }
  70. /* Function to check if list is empty */
  71. public boolean isEmpty()
  72. {
  73. return start == null;
  74. }
  75. /* Function to get size of list */
  76. public int getSize()
  77. {
  78. return size;
  79. }
  80. /* Function to insert element at begining */
  81. public void insertAtStart(int val)
  82. {
  83. Node nptr = new Node(val, null, null);
  84. if(start == null)
  85. {
  86. start = nptr;
  87. end = start;
  88. }
  89. else
  90. {
  91. start.setLinkPrev(nptr);
  92. nptr.setLinkNext(start);
  93. start = nptr;
  94. }
  95. size++;
  96. }
  97. public void insertAtEnd(int val)
  98. {
  99. Node nptr = new Node(val, null, null);
  100. if(start == null)
  101. {
  102. start = nptr;
  103. end = start;
  104. }
  105. else
  106. {
  107. nptr.setLinkPrev(end);
  108. end.setLinkNext(nptr);
  109. end = nptr;
  110. }
  111. size++;
  112. }
  113. /* Function to insert element at position */
  114. public void insertAtPos(int val , int pos)
  115. {
  116. Node nptr = new Node(val, null, null);
  117. if (pos == 1)
  118. {
  119. insertAtStart(val);
  120. return;
  121. }
  122. Node ptr = start;
  123. for (int i = 2; i <= size; i++)
  124. {
  125. if (i == pos)
  126. {
  127. Node tmp = ptr.getLinkNext();
  128. ptr.setLinkNext(nptr);
  129. nptr.setLinkPrev(ptr);
  130. nptr.setLinkNext(tmp);
  131. tmp.setLinkPrev(nptr);
  132. }
  133. ptr = ptr.getLinkNext();
  134. }
  135. size++ ;
  136. }
  137. /* Function to delete node at position */
  138. public void deleteAtPos(int pos)
  139. {
  140. if (pos == 1)
  141. {
  142. if (size == 1)
  143. {
  144. start = null;
  145. end = null;
  146. size = 0;
  147. return;
  148. }
  149. start = start.getLinkNext();
  150. start.setLinkPrev(null);
  151. size--;
  152. return ;
  153. }
  154. if (pos == size)
  155. {
  156. end = end.getLinkPrev();
  157. end.setLinkNext(null);
  158. size-- ;
  159. }
  160. Node ptr = start.getLinkNext();
  161. for (int i = 2; i <= size; i++)
  162. {
  163. if (i == pos)
  164. {
  165. Node p = ptr.getLinkPrev();
  166. Node n = ptr.getLinkNext();
  167.  
  168. p.setLinkNext(n);
  169. n.setLinkPrev(p);
  170. size-- ;
  171. return;
  172. }
  173. ptr = ptr.getLinkNext();
  174. }
  175. }
  176. /* Function to display status of list */
  177. public void display()
  178. {
  179. System.out.print("\nDoubly Linked List = ");
  180. if (size == 0)
  181. {
  182. System.out.print("empty\n");
  183. return;
  184. }
  185. if (start.getLinkNext() == null)
  186. {
  187. System.out.println(start.getData() );
  188. return;
  189. }
  190. Node ptr = start;
  191. System.out.print(start.getData()+ " <-> ");
  192. ptr = start.getLinkNext();
  193. while (ptr.getLinkNext() != null)
  194. {
  195. System.out.print(ptr.getData()+ " <-> ");
  196. ptr = ptr.getLinkNext();
  197. }
  198. System.out.print(ptr.getData()+ "\n");
  199. }
  200. }
  201.  
  202. /* Class DoublyLinkedList */
  203. public class DoublyLinkedList
  204. {
  205. public static void main(String[] args)
  206. {
  207. Scanner scan = new Scanner(System.in);
  208. /* Creating object of linkedList */
  209. linkedList list = new linkedList();
  210. System.out.println("Doubly Linked List Test\n");
  211. char ch;
  212. /* Perform list operations */
  213. do
  214. {
  215. System.out.println("\noptions are");
  216. System.out.println("1. insrt in d begining");
  217. System.out.println("2. insrt @ end");
  218. System.out.println("3. position");
  219. System.out.println("4. delete pos");
  220. System.out.println("5. check empty");
  221. System.out.println("6. get size");
  222.  
  223. int choice = scan.nextInt();
  224. switch (choice)
  225. {
  226. case 1 :
  227. System.out.println("Enter integer element to insert");
  228. list.insertAtStart( scan.nextInt() );
  229. break;
  230. case 2 :
  231. System.out.println("Enter integer element to insert");
  232. list.insertAtEnd( scan.nextInt() );
  233. break;
  234. case 3 :
  235. System.out.println("Enter integer element to insert");
  236. int num = scan.nextInt() ;
  237. System.out.println("Enter position");
  238. int pos = scan.nextInt() ;
  239. if (pos < 1 || pos > list.getSize() )
  240. System.out.println("Invalid position\n");
  241. else
  242. list.insertAtPos(num, pos);
  243. break;
  244. case 4 :
  245. System.out.println("Enter position");
  246. int p = scan.nextInt() ;
  247. if (p < 1 || p > list.getSize() )
  248. System.out.println("Invalid position\n");
  249. else
  250. list.deleteAtPos(p);
  251. break;
  252. case 5 :
  253. System.out.println("Empty status = "+ list.isEmpty());
  254. break;
  255. case 6 :
  256. System.out.println("Size = "+ list.getSize() +" \n");
  257. break;
  258. default :
  259. System.out.println("Wrong Entry \n ");
  260. break;
  261. }
  262. /* Display List */
  263. list.display();
  264. System.out.println("\nDo you want to continue (Type y or n) \n");
  265. ch = scan.next().charAt(0);
  266.  
  267. } while (ch == 'Y'|| ch == 'y');
  268. }
  269. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement