Contoh Program Double Linked List dalam Bahasa C

#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
struct node{
struct node *previous;
int info;
struct node *next;
};
typedef struct node *simpul;

void main()
{
simpul baru, head=NULL, tail=NULL, temp;
int pilih;

do
{
printf("MENU\n");
printf("1. Insert Depan\n");
printf("2. View\n");
printf("3. Search\n");
printf("4. Delete Depan\n");
printf("PILIH: ");
scanf("%d", &pilih);
switch(pilih)
{
case 1:
int data;
printf("Data Masuk: ");
scanf("%i", &data);
baru = (simpul) malloc(sizeof (struct node));
baru->info = 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("%i ", temp->info);
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("%i ", temp->info);
temp = temp->previous; //geser temp ke belakang
}
printf("\n");
break;
case 3:
int cari;
printf("Cari Angka: ");
scanf("%i", &cari);
temp = head;
while((temp!=NULL)&&(temp->info!=cari))
{
temp = temp->next;
}
if(temp != NULL && temp->info == cari)
printf("Data Ditemukan");
else //if(temp == NULL)
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;
}
}while (pilih!=5);
}

13 comments:

  1. makasih pak???????????

    tapi aku masih binggung tentang double linked listnya

    ReplyDelete
  2. mas, kl ini implementasi queue kayaknya salah krn pas dia Delete Depan, seharusnya dia delete yg diinsert pertama kali bukan yg terakhir, selengkapnya ada di blog saya, juga versi java dari program ini.

    thanks!!

    ReplyDelete
  3. memang ini bukan queue, akhi :)
    hanya double LL umum, dimana penambahan dan penghapusan bisa banyak alternatifnya. utk yg queue hrs dibuat sendiri sesuai dgn aturan enqueue dan dequeue yg benar. TIA

    ReplyDelete
  4. AFAIR status facebooknya kan dulu contoh queue pake double linked list kan?
    trs saya tanya pake link list biasa bisa ngga, trus mas nur bilang bisa

    mungkin salah, lupa2 inget, soalnya di blog udah terlanjur kasih judul queue pake double linked list :))

    cheers!!

    ReplyDelete
  5. kak tolong buatin dong program double ll,quequ untuk pemesanan tiket bioskup

    ReplyDelete
  6. ini benr 2 progrm ny????

    ReplyDelete
  7. maksudnya apa ya? mohon diperjelas :)

    ReplyDelete
  8. om, pak, mas..
    bantui ane donk..
    contoh program membalik nama dengan single stack and double stack..

    ane dah buat tapi kok gk jalan..
    help me plizz..
    mohon bantuannya ya..?

    ReplyDelete
  9. pak, buatin program c++ linked list penambahan dari depan dan penambahan dari belakang donk, saya bingung . trims

    ReplyDelete
  10. yg di atas itu sdh ada menu add di depan. klo pengen add di bagian belakang ya tinggal mainkan pointer tail-nya. misal:

    tail->next = new; //next dr tail skrg diarahkan ke baru
    new->prev = tail; //sebelumnya baru, diarahkan ke tail
    tail = new; //geser tail ke posisi baru

    beres :)

    nb: akan lebih jelas jika digambarkan

    ReplyDelete
  11. pak, makasih atas bantuannya . alamdulillah saya udah coba yg diatas tinggal saya tambah2in dikit ternyata berhasil . besok tinggal dikumpulin . ^_^

    ReplyDelete
  12. pak kalo nambahin data nya dari tengah2 dan kita bisa milih mo nambahin data nya di elemen array yg keberapa gimana yah?

    ReplyDelete
  13. GILE brooo Keren banget post nya sangat membantu
    berkat loe tugass gw selesai nie

    ReplyDelete