BAB I

Penbahasan

A. Definisi

A.Tambah di awal
Operasi ini berguna untuk menambahkan elemen baru di posisi pertama. Langkah
pertama untuk penambahan data adalah pembuatan elemen baru dan pengisian nilai
infonya. Pointer yang menunjuk ke data tersebut dipanggil dengan nama baru.
Kondisi di setelah ada pembuatan elemen baru tersebut adalah :

Perintah pembuatan elemen double linked list dalam bahasa C adalah :
pdata baru;
baru=(pdata)malloc(sizeof(tdata));
baru->kiri=NULL;
baru->kanan=NULL;
baru->info=data; // data berasal dari parameter fungsi
Ada 2 kondisi yang harus diperhatikan dalam penambahan data di awal yaitu :
a. Ketika linked list masih kosong
Kalau kondisi linked list masih kosong, maka elemen baru akan menjadi awal
dan akhir linked list.
Perhatikan gambar di bawah ini :
􀂃 Kondisi sebelum disisipkan
􀂃 Kondisi setelah operasi penambahan
Operasi penambahan awal ketika linked list masih kosong adalah dengan
mengisikan alamat pointer baru ke pointer awal dan pointer akhir. Lihat
gambar di bawah ini.

1

B. Tambah di akhir
Operasi ini berguna untuk menambahkan elemen baru di posisi akhir. Langkah
pertama untuk penambahan data adalah pembuatan elemen baru dan pengisian nilai
infonya.

C.Sisip di tengah
Operasi penyisipan data di tengah linked list adalah suatu operasi menambah data
di posisi tertentu di dalam linked list. Contohnya adalah jika ingin menyisipkan
data di posisi ke-3 atau ke-4.
Untuk proses tersebut ada 2 hal yang harus diperhatikan yaitu :
a. Kondisi linked list masih kosong atau posisi penyisipan kurang dari atau sama
dengan 1
Jika kondisi ini terjadi, maka langkah yang dilakukan adalah sangat mudah
yaitu dengan memanggil proses penambahan data awal atau akhir. (untuk lebih
jelas lihat penambahan data awal atau akhir ketika kondisi linked list masih
kosong).
b. Kondisi linked list sudah mempunyai data
Langkah untuk penyisipan data ketika linked list sudah mempunyai data adalah
:
􀂃 Cari posisi pointer pada data ke-posisi sisip.
Menambah Simpul di Tengah Proses penambahan di tengah berarti proses
penyisipan data pada posisi tertentu. Oleh karena itu, posisi penyisipan sangat
diperlukan. Ada beberapa kondisi yang harus diperhatikan ketika ingin melakukan
penyisipandata, yaitu kondisi ketika linked list masih kosong, dan ketika linked list
sudah mempunyai data. Proses penambahan data ketika linked list sudah mempunyai
data. Ada 3 kondisi yang terjadi ketika akan melakukan proses penyisipan pada linked
list yang sudah mempunyai data adalah :

2

Posisi penyisipan di luar dari jangkauan linked list (posisi kurang dari 1 atau
melebihi banyak data yang ada di linked list). Pada proses ini, jika terjadi posisi
penyisipan kurang dari 1 maka proses yang dilakukan adalah proses penambahan data
di awal, dan jika posisi diluar (>) dari banyak data maka proses yang dilakukan adalah
proses penambahan data di akhir.
Posisi penyisipan di dalam jangkauan linked list. Contoh kalau ingin menyisipkan
data pada posisi ke-3 (posisi_sisip=3).

D.Hapus data awal
Operasi ini berguna untuk menghapus data pada posisi pertama. Ada 3 keadaan
yang mungkin terjadi ketika akan melakukan proses hapus yaitu :
a. Kondisi linked list masih kosong

3

Ada 3 keadaan yang mungkin terjadi ketika akan melakukan proses hapus yaitu : a. Jika kondisi ini terjadi.Hapus data terakhir Operasi ini berguna untuk menghapus data pada posisi terakhir.Pindahkan pointer awal ke data berikutnya (bantu􀂃kanan atau awal􀂃kanan). Kondisi linked list masih kosong Jika kondisi ini terjadi. E. Kondisi linked list hanya memiliki 1 data Langkah yang perlu dilakukan ketika ingin melakukan proses penghapusan linked list yang memiliki hanya 1 data adalah dengan langsung menghapus data dari memori dan kemudian pointer awal dan akhir di-NULL-kan. maka proses penghapusan data tidak bisa dilakukan karena linked list masih kosong. 4 . Kondisi linked list hanya memiliki 1 data Langkah yang perlu dilakukan ketika ingin melakukan proses penghapusan linked list yang memiliki hanya 1 data adalah dengan langsung menghapus data dari memori dan kemudian pointer awal dan akhir di-NULL-kan. . Kondisi linked list memiliki data lebih dari 1 buah Untuk operasi penghapusan data di posisi pertama pada double linked list yang mempunyai data lebih dari 1 buah adalah : Simpan pointer yang akan dihapus (awal) ke suatu pointer lain yang diberi nama pointer Bantu . c.Langkah terakhir adalah hapus elemen yang ditunjuk pointer bantu. b. maka proses penghapusan data tidak bisa dilakukan karena linked list masih kosong. b. .Field kiri dari awal yang baru (awal􀂃kiri) di-NULL-kan.

Kondisi ketika posisi hapus sama dengan 1 (hapus data pertama) Ketika kondisi ini terjadi. maka proses penghapusan tidak bisa dilakukan karena data masih kosong atau karena posisi hapus diluar jangkauan linked list (posisi kurang dari 1). b. 5 . Hapus data di tengah Untuk melakukan proses penghapusan di tengah linked list. Menghapus pilihan sebuah simpul adalah menghilangkan simpul dari deret linked list. ada 3 kondisi yang perlu diperhatikan yaitu : a. Ketika kondisi ini terjadi. Stack Pada Linked List Stack pada linked list ini sama seperti menggunakan stack pada array namun pada linked list menggunakan bantuan pointer. Kondisi ketika linked list masih kosong atau ketika posisi hapus lebih kecil dari 1.F. Misalkan kita akan menghapus simpul pada posisi 3. maka proses yang dilakukan adalah proses penghapusan di posisi awal (hapusawal).

cin>>pilihan. Hapus Depan\n4. Tambah Belakang\n3.*ptr_ekor=NULL. Tambah Tengah\n"). printf("========================\n"). Kategori 1 1. struct simpul *berikut. void tambah_tengah_list(void). char ulang.h> #include<stdio. } else if(pilihan==2) { 6 . BAB II PROGRAM A.h> #include<stdlib. }.h> struct simpul { int data. simpul *posisi. if(pilihan==1) { tambah_depan(). main() { int pilihan. Tambah Depan\n2. Keluar\n"). Tambah Tengah #include<iostream. do { clrscr(). printf("1. void tambah_depan(void). printf("\tLINKED LIST\n"). printf("5. void tampilkan(void). printf("========================\n"). printf("Inputkan pilihan : "). void tambah_belakang(void). Tampilkan\n7. printf("========================\n"). struct simpul *ptr_kepala=NULL.h> #include<conio. Hapus Belakang\n6. int option = 0.

}while(ulang=='y'). getch(). 7 . } else if(pilihan==6) { tampilkan(). if(ptr_kepala==NULL){ dpn->berikut=ptr_kepala. } else if(pilihan==4) { tambah_tengah_list(). ptr_kepala=dpn. tambah_belakang(). do{ dpn=(struct simpul *)malloc(sizeof(struct simpul)). }while(ulang=='y' || ulang=='Y').cin>>dpn->data. } else { cout<<"Pilih Ulang". char ulang.cin>>ulang. } cout<<"\n\n\nKembali ke menu(Y/T)". } else{ dpn->berikut=ptr_kepala. } void tambah_depan(void) { printf("\n\n\nTambah Depan\n"). cin>>ulang. cout<<"Masukan data : ". struct simpul *dpn. } cout<<"Masukan data lagi (Y/T)". } else if(pilihan==7) { exit(0). printf("========================\n"). ptr_ekor=dpn. ptr_kepala=dpn.

8 . ptr_bantu=ptr_bantu->berikut. if(ptr_kepala != NULL) { cout<<"Disisip Pada Data Ke : ". cout<<"===============\n". } tampilkan(). bantu->berikut=baru.cin>>baru->data. baru =new simpul. } else { cout<<"DATA KOSONG !!". if(ptr_bantu==NULL){ cout<<"\n\n\nData Kosong"<<endl. baru->berikut=bantu->berikut. *bantu. int posisi_sisip. while(ptr_bantu){ cout<<ptr_bantu->data<<" ". cin>>posisi_sisip. } cout<<"Masukan Data : ". } else{ cout<<"\n\nisi Data "<<endl. ptr_bantu=ptr_kepala. for(int i=1.i++) { if(bantu->berikut != NULL) bantu=bantu->berikut. } } } void tambah_tengah_list(void) { simpul *baru. getch(). bantu=ptr_kepala. else break.} void tampilkan(void) { struct simpul *ptr_bantu.i<posisi_sisip-1.

} 9 . printf("=================\n"). } else{ ptr_ekor->berikut=blk.cin>>ulang.} void tambah_belakang(void) { printf("\n\n\nTambah Belakang\n"). cout<<"\nMasukan data lagi (Y/T)". do{ blk=(struct simpul *)malloc(sizeof(struct simpul)).} ptr_ekor=blk. struct simpul *blk. char ulang.cin>>blk->data. if(ptr_kepala==NULL){ ptr_kepala=blk. }while(ulang=='y'). cout<<"\nMasukan data : ". blk->berikut=NULL.

void tampilkan(void). void tambah_belakang(void). 10 . struct simpul *ptr_kepala=NULL.*ptr_ekor=NULL. void tambah_depan(void).h> #include<conio.h> #include<stdlib. Tambah Tengah #include<iostream. 2. simpul *posisi. }.h> struct simpul { char data.h> #include<stdio. struct simpul *berikut. int option = 0.

printf("Masukan pilihan anda : "). main() { int pilihan. cin>>ulang. printf("==========================\n").void tambah_tengah_list(void).} else if(pilihan==6){ tampilkan().Inputan depan\n2.} cout<<"\nKembali ke menu?(y/n)".} else if(pilihan==4){ tambah_tengah_list().Sisipan Tengah\n4.cin>>pilihan.} else if(pilihan==2){ tambah_belakang(). printf("==========================\n"). if(pilihan==1){ tambah_depan(). printf("\tHuruf Abjad\n"). } else if(pilihan==7){ exit(0). char ulang.} else{ cout<<"Pilih Ulang". 11 . printf("1.Menampilkan\n").Inputan Belakang\n3. printf("==========================\n"). do { clrscr().

} void tambah_depan(void){ printf("\n\n\nTambah dari Depan\n").cin>>ulang. char ulang. ptr_ekor=dpn.cin>>dpn->data. ptr_kepala=dpn.} cout<<"Masukan data lagi (y/n)". ptr_kepala=dpn. getch(). cout<<"Masukan data : ".} else{ dpn->berikut=ptr_kepala. if(ptr_bantu==NULL){ cout<<"\n\n\nData Kosong"<<endl.} void tampilkan(void){ struct simpul *ptr_bantu. while(ptr_bantu){ cout<<ptr_bantu->data<<" ". do{ dpn=(struct simpul *)malloc(sizeof(struct simpul)).} else{ cout<<"\n\n\nData yang ada dalam aplikasi"<<endl. ptr_bantu=ptr_bantu->berikut. }while(ulang=='y' || ulang=='Y'). }while(ulang=='y'). }}} 12 . printf("=================\n"). ptr_bantu=ptr_kepala. if(ptr_kepala==NULL){ dpn->berikut=ptr_kepala. struct simpul *dpn.

cin>>blk->data.} void tambah_belakang(void){ printf("\n\n\nTambah dari Belakang\n").. for(int i=1.. getch(). baru->berikut=bantu->berikut.i++) { if(bantu->berikut != NULL) bantu=bantu->berikut. struct simpul *blk. bantu=ptr_kepala.. else break. cout<<"\nMasukan data : ". cin>>posisi_sisip. } cout<<"Masukan Data : ".cin>>baru->data. if(ptr_kepala==NULL){ 13 . *bantu.". do{ blk=(struct simpul *)malloc(sizeof(struct simpul)). int posisi_sisip. baru =new simpul. if(ptr_kepala != NULL) { cout<<"Akan disisip setelah Data Ke ? : ".i<posisi_sisip-1. printf("================="). } tampilkan(). char ulang.void tambah_tengah_list(void){ simpul *baru.} else{ cout<<"Belum ada data !! silahkan isi data dulu. bantu->berikut=baru.

h> struct simpul { 14 .} ptr_ekor=blk. blk->berikut=NULL.h> #include<conio. }while(ulang=='y').cin>>ulang.h> #include<stdlib.ptr_kepala=blk. Hapus Pilihan 1 #include<iostream.} 3. cout<<"Masukan data lagi (y/n)".h> #include<stdio. } else{ ptr_ekor->berikut=blk.

} else if(pilihan==3){ tampilkan(). Tambah Depan\n2. Hapus Pilihan\n3. printf("\tHapus Pilihan\n").int data. struct simpul *ptr_kepala=NULL. void tambah_depan(void). simpul *posisi.*ptr_ekor=NULL. main(){ int pilihan. void tampilkan(void).cin>>pilihan. printf("Masukan pilihan anda : "). if(pilihan==1){ tambah_depan().} else{ 15 . printf("=========================\n"). printf("=========================\n"). do{ clrscr(). printf("=========================\n"). void hapus_pilihan(void). Tampilkan\n4. }. int option = 0. printf("1.} else if(pilihan==4){ exit(0).} else if(pilihan==2){ hapus_pilihan(). keluar\n"). char ulang. struct simpul *berikut.

}while(ulang=='y').} void tambah_depan(void){ printf("\n\n\nTambah Depan\n").} cout<<"\nKembali ke menu?(y/n)".cin>>dpn->data. do{ dpn=(struct simpul *)malloc(sizeof(struct simpul)).} else{ cout<<"\n\n\nData yang ada dalam Linked List"<<endl. 16 . getch(). }while(ulang=='y' || ulang=='Y'). printf("=================\n"). cout<<"Masukan data : ". ptr_ekor=dpn. struct simpul *dpn. ptr_kepala=dpn. if(ptr_kepala==NULL){ dpn->berikut=ptr_kepala.} void tampilkan(void){ struct simpul *ptr_bantu. cin>>ulang. ptr_bantu=ptr_kepala. if(ptr_bantu==NULL){ cout<<"\n\n\nData Kosong"<<endl. ptr_kepala=dpn.cin>>ulang. cout<<"Pilih Ulang".} cout<<"Masukan data lagi (y/n)". char ulang.} else{ dpn->berikut=ptr_kepala.

simpul *hapus. *bantu. } else { bantu=ptr_kepala. cin>>posisi_hapus.poshapus. if(ptr_kepala != NULL) { cout<<"\n Akan dihapus pada data ke : ". while(poshapus<(posisi_hapus-1)) { bantu=bantu->berikut. ptr_kepala=ptr_kepala->berikut. tampilkan().posisi_hapus.while(ptr_bantu){ cout<<ptr_bantu->data<<" ". banyakdata++. poshapus++. } hapus=bantu->berikut. banyakdata=1.*hps_dpn. } if(posisi_hapus==1) { hps_dpn=ptr_kepala. free(hps_dpn). ptr_bantu=ptr_bantu->berikut.}}} void hapus_pilihan(void){ int banyakdata. poshapus=1. bantu->berikut=hapus->berikut. while(bantu->berikut != NULL){ bantu=bantu->berikut. bantu=ptr_kepala. 17 .

18 .h> #include <stdlib. tidak bisa hapus data dari tengah! ".} else cout<<"Data Masih kosong.} 4. getch(). delete hapus. node *awal_ptr = NULL.} tampilkan(). node *next. Hapus Pilihan 2 #include <iostream.h> struct node{ char nama[20].h> #include <conio. int umur.}. float tinggi.

cin >> baru->tinggi. int option = 0. cout << "umur : " << temp->umur << " ". cout << "Masukkan Umur : ".}} void display_list(){ node *temp. cout << "tinggi : " << temp->tinggi. cout << "Masukkan Nama : ". awal_ptr->next = NULL. node *posisi. cout << endl. awal_ptr = baru. cin >> baru->nama. baru =(struct node *)malloc(sizeof(struct node)). if(awal_ptr == NULL) { awal_ptr=baru. cin >> baru->umur. temp = awal_ptr. cout << "Masukkan tingggi : ". else { while (temp != NULL) { cout << "nama : " << temp->nama << " ".} else{ baru->next = awal_ptr. if (temp == NULL) cout << "List kosong!" << endl. baru->next = NULL. void tambah_awal_list(){ node *baru. 19 .

while(bantu->next != NULL) { bantu=bantu->next. temp = temp->next. free(hps_dpn). poshapus++. *bantu. bantu->next=hapus->next. bantu=awal_ptr.} hapus=bantu->next. poshapus=1.} if(posisi_hapus==1){ hps_dpn=awal_ptr. if (temp == posisi) cout << " <<<< posisi node". } else { bantu=awal_ptr.posisi_hapus. cout << endl.poshapus. banyakdata=1. delete hapus }} 20 . cin>>posisi_hapus. if(awal_ptr != NULL) { cout<<" Akan dihapus pada data ke : ".}} void Hapus_tengah_list(){ int banyakdata. awal_ptr=awal_ptr->next.*hps_dpn. while(poshapus<(posisi_hapus-1)){ bantu=bantu->next. node *hapus. } cout << "Akhir list!" << endl. banyakdata++.

Keluar program. case 2 : Hapus_tengah_list(). cout << endl << " Pilihan >> "." << endl.} 21 . cout << "1. Hapus Pilihan." << endl. do{ clrscr().else cout<<"Data Masih kosong. cout << "MENU PILIHAN : " << endl. Tambah awal list.}} while (option != 0). cout << "0. getch(). cin >> option. cout << "2. tidak bisa hapus data dari tengah! ".} int main(){ awal_ptr = NULL. cout << endl. break. display_list(). switch (option) { case 1 : tambah_awal_list()." << endl. break.

h> #include<iostream. void pop(). ptr->data=nilai. struct simpul *ptr. } void push().}. void show(). class stack{ struct simpul *pertama. B. struct simpul *berikut. void stack::push(){ clrscr(). 22 . public: stack() { pertama=NULL. ptr->berikut=NULL. cin>>nilai.h> #include<stdlib. cout<<"+++++++++++++++++++++++++"<<endl. cout<<"Masukan Data: ".}.h> #include<stdio. int nilai. ptr=new simpul. cout<<" Operasi Tambah \n".h> struct simpul{ int data. Kategori 2 1. Stack pada linked list #include<conio.

} void stack::pop(){ clrscr(). struct simpul *ptr1=pertama. if(pertama!=NULL) ptr->berikut=pertama. } temp=pertama. cout<<" Operasi Hapus \n". getch(). cout<<"Data Terhapus: "<<temp->data. clrscr(). struct simpul *temp. cout<<"<-Atas_____STACK_____Bawah->\n"<<endl. } 23 . cout<<"-------------------"<<endl. pertama=pertama->berikut. clrscr(). return. cout<<"\nData berhasil Masuk stack!!!". clrscr(). if(pertama==NULL) { cout<<"stack kosong!!!". delete temp. pertama=ptr.} void stack::show(){ clrscr(). getch(). ptr1=ptr1->berikut. while(ptr1!=NULL) { cout<<ptr1->data<<"->". getch().

cout<<"\nMasukan Pilhan (1-4): ".EXIT". case 2: s. getch(). break. default: cout<<"Pilihan Tak Tersedia.!!".push().. switch(pilih) { case 1: s. cout<<"-----------------------------------------------------------\n". while(1 { cout<<"-----------------------------------------------------------". case 4: exit(0).TAMPIL STACK\n4.PUSH\n2.POP\n3. break. 24 . getch(). cin>>pilih. break. break. cout<<"1. case 3: s. cout<<"\n\t\tSTACK DENGAN LINKED LIST\n". clrscr(). cout<<"NULL\n". int pilih.show().} main(){ stack s.pop().

clrscr(). float tinggi. break. baru =(struct node *)malloc(sizeof(struct node)). 25 .h> struct node { char nama[20]. int umur. node *posisi. //digunakan untuk membaca sepanjang list int option = 0. cout << "Masukkan Nama : ". void tambah_awal_list() { node *baru.h> #include <conio. node *next. }. cout << "Masukkan Umur : ".h> #include <stdlib. node *awal_ptr = NULL. }}} 2. Stack pada linked list #include <iostream. cin >> baru->nama.

} else { baru->next = awal_ptr. if (temp == NULL) cout << "List kosong!" << endl. temp = temp->next. cin >> baru->umur. } } void display_list() { node *temp. } } void hapus_awal_node() { node *temp. else { while (temp != NULL) { // Menampilkan detail data cout << "nama : " << temp->nama << " ". awal_ptr = awal_ptr->next. cout << endl. cout << "Masukkan tingggi : ". cin >> baru->tinggi. cout << endl. awal_ptr->next = NULL. cout << "tinggi : " << temp->tinggi. temp = awal_ptr. baru->next = NULL. if(awal_ptr == NULL) { awal_ptr=baru. 26 . if (temp == posisi) cout << " <<<< posisi node". } cout << "Akhir list!" << endl. temp = awal_ptr. cout << "umur : " << temp->umur << " ". awal_ptr = baru.

break. Push data. do { clrscr(). } } while (option != 0). cout << endl. switch (option) { case 1 : tambah_awal_list(). cout << "0." << endl. } 27 . Pop data. cout << "1. case 2 : hapus_awal_node(). cin >> option. cout << "MENU PILIHAN : " << endl." << endl. delete temp. break. cout << "2." << endl. } int main() { awal_ptr = NULL. cout << endl << " Pilihan >> ". display_list(). Keluar program.

ptr_kepala=ptr_baru. ptr_baru->berikut=ptr_kepala. }.*ptr_hapus. Stack linked list #include<stdio.h> #include<stdlib. ptr_baru->data=30.h> #include<conio. ptr_baru=(struct simpul *)malloc(sizeof(struct simpul)).h> #include<iostream.h> struct simpul { int data. ptr_baru->berikut=ptr_kepala. struct simpul *berikut. ptr_baru->data=10. ptr_kepala=ptr_baru.Bawah->"<<endl. 28 . ptr_baru->berikut=ptr_kepala. ptr_baru=(struct simpul *)malloc(sizeof(struct simpul)). ptr_kepala=ptr_baru. cout<<"<-Atas ------------. 3. clrscr(). ptr_baru=(struct simpul *)malloc(sizeof(struct simpul)). struct simpul *ptr_kepala=NULL. struct simpul *ptr_bantu. ptr_baru->data=500. main() { struct simpul *ptr_baru.

h> #include<stdio. Stack pada linked list #include<iostream. ptr_bantu=ptr_kepala. ptr_bantu=ptr_bantu->berikut.h> #define max 3 struct stack 29 . while(ptr_bantu) { cout<<ptr_bantu->data<<"<-". ptr_kepala=ptr_kepala->berikut. } 4. free(ptr_hapus).h> #include<conio. } getch().ptr_hapus=ptr_kepala.

int atas. cout<<"3. PUSH DATA"<<endl. tumpuk. getch() } else { cout<<"MASUKKAN DATA : ". PRINT DATA"<<endl<<endl. cout<<"MASUKKAN PILIHAN : ". i. cout<<"2. POP DATA"<<endl.atas=-1. }. stack tumpuk. switch (pilihan) { case 1 : if(tumpuk.atas==max) { cout<<"TUMPUKAN PENUH".{ int data[max+1]. cin>>baru. } break. int pilihan.data[tumpuk. cin>>pilihan. tumpuk. tumpuk. main() { clrscr(). case 2 : 30 .atas++. do { clrscr(). cout<<"1. baru.atas]=baru.

atas]<<endl. getch() } else { int j=1.atas==NULL) { cout<<"TUMPUKAN KOSONG". default : cout<<"TIDAK ADA DALAM PILIHAN". i--) { cout<<"DATA . } getch().atas==NULL) { cout<<"TUMPUKAN KOSONG". getch(). getch(). if(tumpuk. tumpuk.atas--. i>=0. } els { cout<<"DATA YANG AKAN DI POP = "<<tumpuk.} 31 .data[tumpuk. for(i=tumpuk.atas. } break. } } while((pilihan>=1) && (pilihan<=3)). } break. break."<<j++<<tumpuk. case 3 : if(tumpuk. getch().data[i]<<endl.

32 .

push pop. B. BAB III PENUTUP A. Operasi pada stack adalah: Inisialisasi. Stack dapat dideklarasikan dengan sebuah record yang mempunyai elemen sebuah array data untuk menyimpan elemen stack dan sebuah variabel top untuk menunjuk elemen stack teratas (top element). Saran Pelajarilah Stack dalam struktur data sebagai materi dalam sistem pembelajaran. size. 33 . empty. full. Kesimpulan Stack adalah list yang operasi penyisipan dan penghapusan elemennya dilakukan di satu ujung atau biasa juga disebut tumpukkan.

net/istiqlal_miB/makalah-stack-tumpukan 2. http://www. Algoritma dan Struktur Data dengan C++. DAFTAR PUSTAKA 1.0 Yogyakarta : ANDI yogyakarta. Graha Ilmu URL: 1. Rinaldi Munir. P. Ir. Santosa. http://blog-arul. Insap. 3.blogspot. “Algoritma dan Pemrograman”. Indra Yatin. Informatika Bandung 2.id/2012/01/stack-pada-struktur-data. 1992 Struktur data menggunakan TURBO PASCAL 6.co.html 34 .slideshare.