Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- #include "stdlib.h"
- struct node{
- int data;
- struct node *previous;
- struct node *next;
- struct node *x;
- };
- typedef struct node *simpul;
- void main( )
- {
- simpul baru, head=NULL, tail=NULL, temp;
- int pilih, data, cari;
- do
- {
- printf(" MENU\n\n");
- printf("1. Insert Depan\n");
- printf("2. Cetak\n");
- printf("3. Cari\n");
- printf("4. Delete Depan\n");
- printf("5. Insert Tengah\n\n");
- printf("PILIH: ");
- scanf("%d", &pilih);
- switch(pilih)
- {
- case 1:
- printf("Data Masuk: ");
- scanf("%d", &data);
- baru = (simpul) malloc(sizeof (struct node));
- baru->data = data;
- baru->next = NULL; //tidak menuju simpul mana2
- baru->previous = NULL;
- if (head == NULL) //khusus simpul pertama LL
- {
- head = baru; //pointer head, tail, baru sama
- tail = baru;
- }
- else //untuk simpul2 berikutnya
- {
- baru->next = head;
- head->previous = baru;
- head = baru;
- }
- break;
- case 2:
- printf("Dari HEAD\n");
- temp = head; //tampilkan mulai dr depan
- while(temp!=NULL) //ulangi sampai temp bernilai NULL
- {
- printf("%d ", temp->data);
- temp = temp->next; //geser temp ke belakang
- }
- printf("\nDari Tail\n");
- temp = tail; //tampilkan mulai dr depan
- while(temp!=NULL) //ulangi sampai temp bernilai NULL
- {
- printf("%d ", temp->data);
- temp = temp->previous; //geser temp ke belakang
- }
- printf("\n");
- break;
- case 3:
- printf("Cari Angka: ");
- scanf("%d", &cari);
- temp = head;
- while((temp!=NULL)&&(temp->data!=cari))
- {
- temp = temp->next;
- }
- if(temp != NULL && temp->data == cari)
- printf("Data Ditemukan");
- else
- printf("Data Tidak Ditemukan");
- printf("\n");
- break;
- case 4://hapus depan
- temp = head;
- head = head->next;
- if (head != NULL)
- head->previous = NULL;
- if (head == NULL)
- tail = NULL;
- free(temp);
- break;
- case 5:
- printf("Data Masuk: ");
- scanf("%d", &data);
- if (head == NULL)
- {
- head = (simpul)malloc(sizeof (struct node));
- temp = head;
- temp->data = data;
- temp->next=NULL;
- temp->previous=NULL;
- }
- else
- {
- baru = (simpul) malloc(sizeof (struct node));
- baru->data = data;
- baru->next = head->next;
- baru->previous = head;
- head->next->previous = baru;
- head->next = baru;
- }
- break;
- }
- }while (pilih!=6);
- }
Advertisement
Add Comment
Please, Sign In to add comment