Advertisement
Guest User

Untitled

a guest
Mar 24th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.19 KB | None | 0 0
  1.  
  2. /*
  3. * Java Program to Implement Circular Doubly Linked List
  4. */
  5.  
  6. import java.util.Scanner;
  7.  
  8. /* Class Node */
  9. class Node {
  10. protected int data;
  11. protected Node next, prev;
  12.  
  13. /* Constructor */
  14. public Node() {
  15. next = null;
  16. prev = null;
  17. data = 0;
  18. }
  19.  
  20. /* Constructor */
  21. public Node(int d, Node n, Node p) {
  22. data = d;
  23. next = n;
  24. prev = p;
  25. }
  26.  
  27. /* Function to set link to next node */
  28. public void setLinkNext(Node n) {
  29. next = n;
  30. }
  31.  
  32. /* Function to set link to previous node */
  33. public void setLinkPrev(Node p) {
  34. prev = p;
  35. }
  36.  
  37. /* Function to get link to next node */
  38. public Node getLinkNext() {
  39. return next;
  40. }
  41.  
  42. /* Function to get link to previous node */
  43. public Node getLinkPrev() {
  44. return prev;
  45. }
  46.  
  47. /* Function to set data to node */
  48. public void setData(int d) {
  49. data = d;
  50. }
  51.  
  52. /* Function to get data from node */
  53. public int getData() {
  54. return data;
  55. }
  56. }
  57.  
  58. /* Class linkedList */
  59. class linkedList {
  60. protected Node start;
  61. protected Node end;
  62. public int size;
  63. public int maxSize;
  64.  
  65. /* Constructor */
  66. public linkedList() {
  67. start = null;
  68. end = null;
  69. size = 0;
  70. maxSize = 10;
  71. }
  72.  
  73. /* Function to check if list is empty */
  74. public boolean isEmpty() {
  75. return start == null;
  76. }
  77.  
  78. /* Function to check if list is full */
  79. public boolean isFull() {
  80. return size >= maxSize;
  81. }
  82.  
  83. /* Function to get size of list */
  84. public int getSize() {
  85. return size;
  86. }
  87.  
  88. /* Function to insert element at beginning */
  89. public void insertAtStart(int val) {
  90. if (size < maxSize) {
  91. Node nptr = new Node(val, null, null);
  92. if (start == null) {
  93. nptr.setLinkNext(nptr);
  94. nptr.setLinkPrev(nptr);
  95. start = nptr;
  96. end = start;
  97. } else {
  98. nptr.setLinkPrev(end);
  99. end.setLinkNext(nptr);
  100. start.setLinkPrev(nptr);
  101. nptr.setLinkNext(start);
  102. start = nptr;
  103. }
  104. size++;
  105. } else {
  106. System.out.println("\nSaraksts ir pilns! \n");
  107. }
  108. }
  109.  
  110. /* Function to insert element at end */
  111. public void insertAtEnd(int val) {
  112. if (size < maxSize) {
  113. Node nptr = new Node(val, null, null);
  114. if (start == null) {
  115. nptr.setLinkNext(nptr);
  116. nptr.setLinkPrev(nptr);
  117. start = nptr;
  118. end = start;
  119. } else {
  120. nptr.setLinkPrev(end);
  121. end.setLinkNext(nptr);
  122. start.setLinkPrev(nptr);
  123. nptr.setLinkNext(start);
  124. end = nptr;
  125. }
  126. size++;
  127. } else {
  128. System.out.println("\nSaraksts ir pilns! \n");
  129. }
  130. }
  131.  
  132. /* Function to insert element at position */
  133. public void insertAtPos(int val, int pos) {
  134. if (size < maxSize) {
  135. Node nptr = new Node(val, null, null);
  136. if (pos == 1) {
  137. insertAtStart(val);
  138. return;
  139. }
  140. Node ptr = start;
  141. for (int i = 2; i <= size; i++) {
  142. if (i == pos) {
  143. Node tmp = ptr.getLinkNext();
  144. ptr.setLinkNext(nptr);
  145. nptr.setLinkPrev(ptr);
  146. nptr.setLinkNext(tmp);
  147. tmp.setLinkPrev(nptr);
  148. }
  149. ptr = ptr.getLinkNext();
  150. }
  151. size++;
  152. } else {
  153. System.out.println("\nSaraksts ir pilns! \n");
  154. }
  155. }
  156.  
  157. /* Function to delete node at position */
  158. public void deleteAtPos(int pos) {
  159. if (pos == 1) {
  160. if (size == 1) {
  161. start = null;
  162. end = null;
  163. size = 0;
  164. return;
  165. }
  166. start = start.getLinkNext();
  167. start.setLinkPrev(end);
  168. end.setLinkNext(start);
  169. size--;
  170. return;
  171. }
  172. if (pos == size) {
  173. end = end.getLinkPrev();
  174. end.setLinkNext(start);
  175. start.setLinkPrev(end);
  176. size--;
  177. }
  178. Node ptr = start.getLinkNext();
  179. for (int i = 2; i <= size; i++) {
  180. if (i == pos) {
  181. Node p = ptr.getLinkPrev();
  182. Node n = ptr.getLinkNext();
  183. p.setLinkNext(n);
  184. n.setLinkPrev(p);
  185. size--;
  186. return;
  187. }
  188. ptr = ptr.getLinkNext();
  189. }
  190. }
  191.  
  192. /* Function to display status of list */
  193. public void display() {
  194. System.out.print("\nDivkāršsaistīts cirkulārs saraksts = ");
  195. Node ptr = start;
  196. if (size == 0) {
  197. System.out.print("Tukšs\n");
  198. return;
  199. }
  200. if (start.getLinkNext() == start) {
  201. System.out.print(start.getData() + " <-> " + ptr.getData() + "\n");
  202. return;
  203. }
  204. System.out.print(start.getData() + " <-> ");
  205. ptr = start.getLinkNext();
  206. while (ptr.getLinkNext() != start) {
  207. System.out.print(ptr.getData() + " <-> ");
  208. ptr = ptr.getLinkNext();
  209. }
  210. System.out.print(ptr.getData() + " <-> ");
  211. ptr = ptr.getLinkNext();
  212. System.out.print(ptr.getData() + "\n");
  213. }
  214. }
  215.  
  216. /* Class CircularDoublyLinkedList */
  217. public class Ld2_15 {
  218. public static void main(String[] args) {
  219. Scanner scan = new Scanner(System.in);
  220.  
  221. /* Creating object of linkedList */
  222. linkedList list = new linkedList();
  223. System.out.println("Reinis Rītiņš RDBI05 161RDB062");
  224. char ch;
  225. int choice = 0;
  226.  
  227. /* Perform list operations */
  228. do {
  229. System.out.println("\nDivkāršsaistīta cirkulāra saraksta operācijas\n");
  230. System.out.println("1. Ievietot skaitli saraksta sākumā");
  231. System.out.println("2. Ievietot skaitli saraksta beigās");
  232. System.out.println("3. Ievietot skaitli sarakstā izvēlētajā pozīcijā");
  233. System.out.println("4. Izdzēst skaitli no izvēlētas pozīcijas sarakstā");
  234. System.out.println("5. Pārbaudīt, vai saraksts ir tukšs");
  235. System.out.println("6. Pārbaudīt, vai saraksts ir pilns");
  236. System.out.println("7. Pārbaudīt saraksta izmēru");
  237.  
  238. if (scan.hasNextInt()) {
  239. choice = scan.nextInt();
  240. } else {
  241. choice = -1;
  242. scan.next();
  243. }
  244. switch (choice) {
  245. case 1:
  246. System.out.println("Ievadiet veselu skaitli, ko ievietot saraksta sākumā");
  247. if (scan.hasNextInt()) {
  248. list.insertAtStart(scan.nextInt());
  249. break;
  250. } else {
  251. System.out.println("Jums ir jāievada vesels skaitlis! \n ");
  252. scan.next();
  253. break;
  254. }
  255. case 2:
  256. System.out.println("Ievadiet veselu skaitli, ko ievietot saraksta beigās");
  257. list.insertAtEnd(scan.nextInt());
  258. break;
  259. case 3:
  260. System.out.println("Ievadiet veselu skaitli, ko ievietot sarakstā noteiktā pozīcijā");
  261. int num = scan.nextInt();
  262. System.out.println("Ievadiet pozīciju");
  263. int pos = scan.nextInt();
  264. if (pos < 1 || pos > list.getSize())
  265. System.out.println("Nepareiza pozīcija\n");
  266. else
  267. list.insertAtPos(num, pos);
  268. break;
  269. case 4:
  270. System.out.println("Ievadiet pozīciju");
  271. int p = scan.nextInt();
  272. if (p < 1 || p > list.getSize())
  273. System.out.println("Nepareiza pozīcija\n");
  274. else
  275. list.deleteAtPos(p);
  276. break;
  277. case 5:
  278. System.out.println("Vai saraksts ir tukšs? = " + list.isEmpty());
  279. break;
  280. case 6:
  281. if (list.isFull == true) {
  282. System.out.println("Vai saraksts ir pilns? = " + list.isFull());
  283. }
  284. break;
  285. case 7:
  286. System.out.println("Izmērs = " + list.getSize() + " \n");
  287. break;
  288. default:
  289. System.out.println("Nepareiza ievade. Lūdzu ievadiet skaitli no 1 līdz 7! \n ");
  290. break;
  291. }
  292.  
  293. /* Display List */
  294. list.display();
  295. do {
  296. System.out.println("\nVai Jūs vēlaties turpināt? (Ievadiet J vai N) \n");
  297. ch = scan.next().charAt(0);
  298. } while(ch != 'n' && ch != 'N' && ch != 'j' && ch != 'J');
  299. } while (ch == 'J' || ch == 'j');
  300. scan.close();
  301. }
  302. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement