Linked
list adalah
sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang
setiap elemennya terdiri dari dua bagian Linked list juga merupakan suatu cara
untuk menyimpan data dengan struktur sehingga dapat secara otomatis menciptakan
suatu tempat baru untuk menyimpan data yangdiperlukan. Struktur ini lebih
dinamis karena banyaknya elemen dengan mudah ditambah atau dikurangi, berbeda
dengan array yang ukurannya tetap. berikut gambaran kecil mengenai linked list.
Macam-macam Linked List :
1.
Linked
List Circular
a. Double Linked List
a. Double Linked List
Pengertian
secara umumnya DLLC itu Linked list yang menggunakan pointer, dimana setiap
node memiliki 3 field, yaitu: 1 field pointer yang menunjuk pointer berikutnya
"next", 1 field
menunjuk pointer sebelumnya " prev ", 1 field yang berisi data untuk node tersebut .
b.
Single Linked List
Single Linked List
Circular (SLLC) adalah Single Linked List yang pointer nextnya menunjuk pada
dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa node,
maka pointer next pada node terakhir akan menunjuk ke node terdepannya.
2. Linked List Non Circular
Double Linked List Non Circular (DLLNC)
adalah Double Linked List yang memiliki 2 buah pointer yaitu pointernext dan prev. Pointer next menunjuk pada node setelahnya dan pointer prev menunjuk pada node sebelumnya.
Double Linked List Non Circular (DLLNC)
adalah Double Linked List yang memiliki 2 buah pointer yaitu pointernext dan prev. Pointer next menunjuk pada node setelahnya dan pointer prev menunjuk pada node sebelumnya.
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <malloc.h>
using namespace std;
struct simpul
{
int
data;
struct
simpul *next;
}
*baru,
*awal=NULL,*akhir=NULL,*hapus,*temp;
void
buat_baru()
{
baru=(simpul*)
malloc (sizeof(struct simpul));
cout<<"Masukkan
Data : "; cin>>baru->data;
baru->next=NULL;
}
void
insert_depan()
{
buat_baru();
if(awal=NULL)
{
awal=baru;
akhir=baru;
akhir->next=NULL;
}
else
{
baru->next=awal;
awal=baru;
}
cout<<endl<<endl;
}
void
insert_belakang()
{
buat_baru();
if(awal=NULL)
{
awal=baru;
}
else
{
akhir->next=baru;
}
akhir=baru;
akhir->next=NULL;
cout<<endl<<endl;
}
void
hapus_depan()
{
if(awal=NULL)
cout<<"kosong";
else
{
hapus=awal;
awal=awal->next;
free(hapus);
}
cout<<endl<<endl;
}
void
hapus_belakang()
{
if(awal=NULL)
cout<<"kosong";
else
if (awal=akhir)
{
hapus=awal;
awal=awal->next;
free(hapus);
}
else
{
hapus=awal;
while
(hapus->next!=akhir)
hapus=hapus->next;
akhir=hapus;
hapus=akhir->next;
akhir->next=NULL;
free(hapus);
}
cout<<endl<<endl;
}
void
tampil()
{
if(awal=NULL)
cout<<"kosong";
else
{
temp=awal;
while(temp!=NULL)
{
cout<<"data:"<<temp->data<<"";
temp=temp->next;
}
}
getch();
}
main()
{
char
pilihan;
do
{
system
("cls");
cout<<"Single
Linked List"<<endl;
cout<<"[a]
Insert Depan"<<endl;
cout<<"[b]
Insert belakang"<<endl;
cout<<"[c]
hapus Depan"<<endl;
cout<<"[d]
hapus belakang"<<endl;
cout<<"[e]
tampilkan"<<endl;
cout<<"[0]
keluar"<<endl;
cout<<"Pilihan:";cin>>pilihan;
switch(pilihan)
{
case
'a' :system("cls");
cout<<">>Insert
Depan<<"<<endl<<endl;
insert_depan();
cout<<"data
berhasil di tambah di depan....";
getch();
break;
case
'b' :system("cls");
cout<<">>Insert
Belakang<<"<<endl<<endl;
insert_belakang();
cout<<"data
berhasil di tambah di belakang....";
getch();
break;
case
'c' :system("cls");
cout<<">>Hapus
Depan<<"<<endl<<endl;
hapus_depan();
cout<<"data
berhasil di hapus di depan....";
getch();
break;
case
'd' :system("cls");
cout<<">>Hapus
Belakang<<"<<endl<<endl;
hapus_belakang();
cout<<"data
berhasil di hapus din belakang....";
getch();
break;
case
'e' :system("cls");
cout<<">>tampilkan<<"<<endl<<endl;
tampil();
break;
case
'0':break;
}
}
while(pilihan!='0');
}
|
berikut output programnya :
Tidak ada komentar: