#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);
}
makasih pak???????????
ReplyDeletetapi aku masih binggung tentang double linked listnya
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.
ReplyDeletethanks!!
memang ini bukan queue, akhi :)
ReplyDeletehanya 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
AFAIR status facebooknya kan dulu contoh queue pake double linked list kan?
ReplyDeletetrs 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!!
kak tolong buatin dong program double ll,quequ untuk pemesanan tiket bioskup
ReplyDeleteini benr 2 progrm ny????
ReplyDeletemaksudnya apa ya? mohon diperjelas :)
ReplyDeleteom, pak, mas..
ReplyDeletebantui 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..?
pak, buatin program c++ linked list penambahan dari depan dan penambahan dari belakang donk, saya bingung . trims
ReplyDeleteyg di atas itu sdh ada menu add di depan. klo pengen add di bagian belakang ya tinggal mainkan pointer tail-nya. misal:
ReplyDeletetail->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
pak, makasih atas bantuannya . alamdulillah saya udah coba yg diatas tinggal saya tambah2in dikit ternyata berhasil . besok tinggal dikumpulin . ^_^
ReplyDeletepak kalo nambahin data nya dari tengah2 dan kita bisa milih mo nambahin data nya di elemen array yg keberapa gimana yah?
ReplyDeleteGILE brooo Keren banget post nya sangat membantu
ReplyDeleteberkat loe tugass gw selesai nie