agusilham01

Insert Middle - Double Linked List C

Apr 21st, 2018
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.10 KB | None | 0 0
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. struct node{
  4. int data;
  5. struct node *previous;
  6. struct node *next;
  7. struct node *x;
  8. };
  9. typedef struct node *simpul;
  10. void main( )
  11. {
  12. simpul baru, head=NULL, tail=NULL, temp;
  13.  
  14. int pilih, data, cari;
  15. do
  16. {
  17. printf(" MENU\n\n");
  18. printf("1. Insert Depan\n");
  19. printf("2. Cetak\n");
  20. printf("3. Cari\n");
  21. printf("4. Delete Depan\n");
  22. printf("5. Insert Tengah\n\n");
  23. printf("PILIH: ");
  24. scanf("%d", &pilih);
  25. switch(pilih)
  26. {
  27. case 1:
  28. printf("Data Masuk: ");
  29. scanf("%d", &data);
  30. baru = (simpul) malloc(sizeof (struct node));
  31. baru->data = data;
  32. baru->next = NULL; //tidak menuju simpul mana2
  33. baru->previous = NULL;
  34. if (head == NULL) //khusus simpul pertama LL
  35. {
  36. head = baru; //pointer head, tail, baru sama
  37. tail = baru;
  38. }
  39. else //untuk simpul2 berikutnya
  40. {
  41. baru->next = head;
  42. head->previous = baru;
  43. head = baru;
  44. }
  45. break;
  46. case 2:
  47. printf("Dari HEAD\n");
  48. temp = head; //tampilkan mulai dr depan
  49. while(temp!=NULL) //ulangi sampai temp bernilai NULL
  50. {
  51. printf("%d ", temp->data);
  52. temp = temp->next; //geser temp ke belakang
  53. }
  54. printf("\nDari Tail\n");
  55. temp = tail; //tampilkan mulai dr depan
  56. while(temp!=NULL) //ulangi sampai temp bernilai NULL
  57. {
  58. printf("%d ", temp->data);
  59. temp = temp->previous; //geser temp ke belakang
  60. }
  61. printf("\n");
  62. break;
  63. case 3:
  64. printf("Cari Angka: ");
  65. scanf("%d", &cari);
  66. temp = head;
  67. while((temp!=NULL)&&(temp->data!=cari))
  68. {
  69. temp = temp->next;
  70. }
  71. if(temp != NULL && temp->data == cari)
  72. printf("Data Ditemukan");
  73. else
  74. printf("Data Tidak Ditemukan");
  75. printf("\n");
  76. break;
  77. case 4://hapus depan
  78. temp = head;
  79. head = head->next;
  80. if (head != NULL)
  81. head->previous = NULL;
  82. if (head == NULL)
  83. tail = NULL;
  84. free(temp);
  85. break;
  86. case 5:
  87. printf("Data Masuk: ");
  88. scanf("%d", &data);
  89. if (head == NULL)
  90. {
  91. head = (simpul)malloc(sizeof (struct node));
  92. temp = head;
  93. temp->data = data;
  94. temp->next=NULL;
  95. temp->previous=NULL;
  96. }
  97. else
  98. {
  99. baru = (simpul) malloc(sizeof (struct node));
  100. baru->data = data;
  101. baru->next = head->next;
  102. baru->previous = head;
  103. head->next->previous = baru;
  104. head->next = baru;
  105. }
  106. break;
  107. }
  108. }while (pilih!=6);
  109. }
Advertisement
Add Comment
Please, Sign In to add comment