Perbedaan Stack dan Queue Linked List


Beberapa minggu yang lalu, dapet tugas seperti judul di atas. bingung banget lah, terutma mengenai linked listnya. tapi di sini saya menganggap para pembaca udah pada ngerti yaa sama linked list nya. hehe. berikut program dan ilustrasi Stack dan Queue…

  1. STACK : tumpukan, LIFO (Last In First Out–yang terakhir masuk  yang duluan keluar–), contoh: kamu punya buku A,B,C. yang disimpan pertama adalah buku A, kemudian kamu tumpuk buku B di atasnya, kemudian buku C. nah, ketika kamu mau ngambil buku, pasti dari yang teratas dulu, yaitu buku C. jadi buku C keluar duluan.
  2. QUEUE: barisan, FIFO (First In First Out–yang pertama masuk yang duluan keluar–), contoh: kamu mengantri ketika beli tiket bioskop. Kamu pertama datang, kemudian ada orang lain yang datang, dia pasti berdiri di belakang kamu, begitu seterusnya ketika orang-orang mulai berdatangan juga. nah, yang duluan selesai kamu kan? jadi kamu duluan yang keluar dari barisan itu.

Udah mengerti dengan contoh sehari-hari? So, let’s check the program!

1. STACK DENGAN LINKED LIST

Saya biasanya untuk linked list memakai method isEmpty() untuk checking node.

Dalam Stack, dikenal PUSH dan POP. PUSH sama dengan insert, dan POP sama dengan remove.

#include <conio.h>
#include <stdio.h>
#include <malloc.h>

typedef struct node{
int data;
node *next;
}node;
node *head;

void init(){
head=NULL;
}

int isEmpty(){
if(head==NULL) return 1;
else return 0;
}

void push(int databaru){
node *baru;
baru=new node;
baru->data=databaru;
baru->next=NULL;
if(isEmpty()==1){
head=baru;
head->next=NULL;
}
else {
baru->next=head;
head=baru;
}
}

void pop(){
node *hapus;
int d;
if(isEmpty()==0) {
if(head->next!=NULL){
hapus=head;
d=hapus->data;
head=head->next;
delete hapus;
}
else {
d=head->data;
head=NULL;
}
}
}

void tampil(){
node *bantu;
bantu = head;
if(isEmpty()==0){
while(bantu!=NULL){
printf(“%3d”,bantu->data);
bantu=bantu->next;
}
printf(“\n”);
} else printf(“Masih kosong\n”);
}

void main()
{
printf(“—————–\n”);
printf(”  PROGRAM STACK \n”);
printf(“—————–\n”);
printf(“Isi Stack awal \n”);
tampil();
printf(“\n”);
printf(“Memasukkan data menggunakan PUSH \n”);
push(12);
push(30);
push(15);
tampil();
printf(“\n”);
printf(“Menghapus data menggunakan POP \n”);
pop();
tampil();

getch();
}

ilustrasi nya:

Dapat kita simpulkan, Stack menggunakan InsertDepan dan HapusDepan Linked List.

2. QUEUE

Dalam Queue, dikenal Enqueue dan Dequeue, sama dengan insertQueue dan removeQueue.

#include <conio.h>
#include <stdio.h>
#include <malloc.h>

typedef struct node{
int data;
node *next;
}node;

node *head, *tail;

void init(){
head = NULL;
tail = NULL;
}

int isEmpty(){
if(tail == NULL) return 1;
else return 0;
}

void enqueue(int databaru){
node *baru,*bantu;
baru = new node;
baru->data = databaru;
baru->next = NULL;
if(isEmpty()==1){
head=baru;
tail=baru;
tail->next = NULL;
}
else {
tail->next = baru;
tail=baru;
}
}

void dequeue(){
node *hapus;
int d;
if (isEmpty()==0){
if(head!=tail){
hapus = head;
d = hapus->data;
head = head->next;
delete hapus;
} else {
d = tail->data;
head=tail=NULL;
}
} else printf(“Masih kosong\n”);
}

void tampil(){
node *bantu;
bantu = head;
if(isEmpty()==0){
while(bantu!=NULL){
printf(“%3d”,bantu->data);
bantu=bantu->next;
}
printf(“\n”);
} else printf(“Masih kosong\n”);
}

void main()
{
printf(“—————–\n”);
printf(”  PROGRAM QUEUE \n”);
printf(“—————–\n”);
printf(“Isi Stack awal \n”);
tampil();
printf(“\n”);
printf(“Memasukkan data menggunakan ENQUEUE \n”);
enqueue(12);
enqueue(30);
enqueue(15);
tampil();
printf(“\n”);
printf(“Menghapus data menggunakan DEQUEUE \n”);
dequeue();
tampil();

getch();
}

Ilustrasinya:

Kesimpulannya, Enqueue menggunakan InsertBelakang dan HapusDepan Linked List.

That’s it! Semoga bermanfaat 🙂

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s