SlideShare a Scribd company logo
LAPORAN
PRAKTIKUM IMPLEMENTASI STRUKTUR DATA
MODUL 3
LINKED LIST
Disusun oleh:
Muhammad Arif Al’ Azmi
123090069
Plug 9
Asissten / CoAss
Widy Sulistianto / Dian Andarini W.
TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” YOGYAKARTA
2010
BAB I
LAPORAN
Listing Program :
#include <iostream>
#include <malloc.h>
using namespace std;
typedef int typeinfo;
typedef struct typenode *typeptr;
typedef struct typenode{typeinfo info;
typeptr next;
};
typeptr awal,akhir;
void buatlistbaru();
void sisipdepan(typeinfo IB);
void sisipbelakang(typeinfo IB);
void sisiptengah(typeinfo IB);
void hapuslist(typeinfo IB);
void cetaklist();
int main()
{
buatlistbaru();
sisipdepan(10);
sisipbelakang(25);
sisipbelakang(100);
sisiptengah(50);
cetaklist();
hapuslist(50);
cetaklist();
return 0;
}
void buatlistbaru()
{
typeptr list;
list=(typenode *) malloc(sizeof(typenode));
list=NULL;
awal=list;
akhir=list;
}
void sisipdepan(typeinfo IB)
{
typeptr NB;
NB=(typenode *) malloc(sizeof(typenode));
NB->info=IB;
if (awal==NULL)
{ awal=NB;
akhir=NB; }
else
{ NB->next=awal; }
awal=NB;
}
void sisipbelakang(typeinfo IB)
{
typeptr NB;
NB=(typenode *) malloc(sizeof(typenode));
NB->info=IB;
if (awal==NULL)
{ awal=NB;
akhir=NB; }
else
{ akhir->next=NB; }
akhir=NB;
akhir->next=NULL;
}
void sisiptengah(typeinfo IB)
{
typeptr NB, bantu;
NB=(typenode *) malloc(sizeof(typenode));
NB->info=IB;
NB->next=NULL;
if (awal==NULL)
{ awal=NB;
akhir=NB;
}
else
{ bantu=awal;
while ((IB > bantu->next->info) && (bantu->next!=NULL))
bantu=bantu->next;
NB->next=bantu->next;
bantu->next=NB;
}
}
void hapuslist(typeinfo IH)
{
typeptr hapus, bantu;
if (awal==NULL)
{
cout << "List masih kosong!n";
}
else
{ if (awal->info==IH)
{ hapus=awal;
awal=hapus->next;
free(hapus); }
else
{ bantu=awal;
while ((bantu->next->info!=IH) && (bantu->next!=NULL))
{ bantu=bantu->next; }
hapus=bantu->next;
if (hapus==NULL)
{ cout << "List tidak ditemukann";
}
else
{ if (hapus==akhir)
{ akhir=bantu;
akhir->next=NULL; }
else
{ bantu->next=hapus->next; }
free(hapus); }
}
}
}
void cetaklist()
{ typeptr bantu;
bantu=awal;
while (bantu!=NULL)
{ cout << " " << bantu->info;
cout << " ";
bantu=bantu->next; }
}
Output :
Penjelasan :
Pada program di atas, merupakan program linked list bertipe pointer dimana pada program di
atas menggunakan library “iostream” (iostream merupakan compiler yang berfungsi mengkompile
fungsi “ cin”, “cout”, dll). Setelah menentukan library barulah mendeklarasikan tipe pointer, dan
mendeklarasikan struct (merekam data). Setelah selesai mendeklarasikan tipe pointer maka slanjutnya
mendeklarasikan fungsi yang nantinya akan digunakan untuk membentuk linked list tersebut.
Setealah selesai mendeklarsikan fungsi serta tipe node maka selanjutnya mulai membuat isi
program linked list. Di dalam program linked list, saatnya membuat isi list, setelah itu fungsi yang telah
di deklarasikan di panggil satu persatu.
void buatlistbaru()
{
typeptr list;
list=(typenode *) malloc(sizeof(typenode));
list=NULL;
awal=list;
akhir=list;
}
Listing diatas merupakan sebuah pemanggilan fungsi yang digunakan untuk membuat sebuah list.
void sisipdepan(typeinfo IB)
{
typeptr NB;
NB=(typenode *) malloc(sizeof(typenode));
NB->info=IB;
if (awal==NULL)
{ awal=NB;
akhir=NB; }
else
{ NB->next=awal; }
awal=NB;
}
Listing diatas merupakan sebuah pemanggilan fungsi yang digunakan untuk menyisipkaan node baru di
awal urutan node yang telah di buat.
void sisipbelakang(typeinfo IB)
{
typeptr NB;
NB=(typenode *) malloc(sizeof(typenode));
NB->info=IB;
if (awal==NULL)
{ awal=NB;
akhir=NB; }
else
{ akhir->next=NB; }
akhir=NB;
akhir->next=NULL;
}
Listing diatas merupakan sebuah pemanggilan fungsi yang digunakan untuk menyisipkaan node baru di
akhir urutan node yang telah di buat.
void sisiptengah(typeinfo IB)
{
typeptr NB, bantu;
NB=(typenode *) malloc(sizeof(typenode));
NB->info=IB;
NB->next=NULL;
if (awal==NULL)
{ awal=NB;
akhir=NB;
}
else
{ bantu=awal;
while ((IB > bantu->next->info) && (bantu->next!=NULL))
bantu=bantu->next;
NB->next=bantu->next;
bantu->next=NB;
}
}
Listing diatas merupakan sebuah pemanggilan fungsi yang digunakan untuk menyisipkaan node baru di
tengah urutan node yang telah di buat.
void hapuslist(typeinfo IH)
{
typeptr hapus, bantu;
if (awal==NULL)
{
cout << "List masih kosong!n";
}
else
{ if (awal->info==IH)
{ hapus=awal;
awal=hapus->next;
free(hapus); }
else
{ bantu=awal;
while ((bantu->next->info!=IH) && (bantu->next!=NULL))
{ bantu=bantu->next; }
hapus=bantu->next;
if (hapus==NULL)
{ cout << "List tidak ditemukann";
}
else
{ if (hapus==akhir)
{ akhir=bantu;
akhir->next=NULL; }
else
{ bantu->next=hapus->next; }
free(hapus); }
}
}
}
Listing diatas merupakan sebuah pemanggilan fungsi yang digunakan untuk menghapus sebuah node di
baghian awal yang telah di buat, dengan menggunakan statement pengendalian.
void cetaklist()
{ typeptr bantu;
bantu=awal;
while (bantu!=NULL)
{ cout << " " << bantu->info;
cout << " ";
bantu=bantu->next; }
}
Listing diatas merupakan sebuah pemanggilan fungsi yang digunakan untuk mencetak node yang telah
di buat termasuk yang telah disisipkan.
BAB II
TUGAS
Artikel Linked List dengan Array
Implementasi Struktur Data dalam Linked List Linked list atau senatai berantai adalah kunpulan
liniar sejumlah data , atau kumpulan komponen yang disusun secara berurutan pointer. Masing-masing
komponen dinamakan dengan simpul (node). Simpul dalam suatu Linked list terbagi menjadi dua
bagian yaitu medan informasi yang berisi informasi yang akan disimpan dan diolah, dan medan
penyambung (Link field) yang berisi simpul berikutnya. Ada sejumlah operasi yang bisa kita lakukan
pada sebuah Linked list yaitu membaca isi link, menambah simpul, menghapus simpul dan mencari
informasi pada Linked list .
1. Menambah simpul
Operasi menambah simpul bisa dipecah berdasarkan posisi simpul dabu yang akan di sisipkan,
yaitu simpul baru selalu diletakkan sebagai simpul pertama, dan simpul baru menyisip diantara
kedua simpul yang sudah ada. Berikut contohnya :
type Simpul = ^Data ;
Data = record
Info : char ;
Berikut : Simpul ;
end ;
var Element : char ;
Awal, Akhir, Baru : Simpul ;
2. Menambah di Belakang
Operasi penambahan simpul pada Linked list adalah penambahan suatu Linked list. Simpul-
simpul abru yang ditambahkan selalu menjadi sipmpul terakhir.
Prosedur yang bisa dipanggil dengan memanggil prosedur :
TAMBAH_BELAKANG (Awal, Akhir, Elemen);
Program selengkapnya adalah :
procedure TAMBAH_BELAKANG (var Awal, Akhir : Simpul ;
Elemen : char ) ;
var Baru : Simpul ;
begin
new (Baru) ; Baru^.Info :=Elemen;
if Awal = nil then
Awal := Baru
else
Akhir^.Berikut := Baru;
Akhir := Baru;
Akhir^.Berikut := nil
end ;
3. Menambah didepan
Operasi penambahan simpul baru akan selalu diletakkan diawal link. Prosedur untuk menambah
simpul bisa dipanggil dengan menggunakan :
TAMBAH_DEPAN (Awal, Akhir, Elemen);
Program selengkapnya adalah :
procedure TAMBAH_DEPAN (var Awal, Akhir : Simpul ;
Elemen : char ) ;
var Baru : Simpul ;
begin
new (Baru) ; Baru^.Info :=Elemen;
if Awal = nil then
Akhir := Baru
else
Baru^.Berikut := Awal;
Awal := Baru;
end
4. Menambah ditengah
Untuk menembah ditengan linked list memerlukan memerlukan bantuan pointer misalnya
bantu, perhatikan contoh program berikut ;
procedure TAMBAH_TENGAH(var Awal, Akhir : Simpul ;
Elemen : char ) ;
var Baru, Bantu : Simpul ;
begin
new (Baru) ; Baru^.Info :=Elemen;
if Awal = nil then
begin
Awal := Baru;
Akhir := Baru;
end;
else
begin
Bantu := Awal;
while Elemen > Baru^.Berikut^.Info do
Bantu := Bantu^.Berikut;
Baru^.Berikut := Bantu^.Berikut;
Bantu^.Berikut := Baru;
end;
end ;
5. Menghapus Simpul
Operaasi kedua yang akan dijelaskan adalah operasi menghapus simpul. Dalam menghapus
simpul ada suatu hal yang perlu diperhatikan, yaitu bahwa simpul yang bias dihapus adalah
simpul yang berada sesudah simpul yang ditunjukan oleh suatu pointer, kecuali untuk simpul
pertama. Dengan demikian kita tidak bias menghapus simpul yang ditunjuk oleh suatu pointer
atau simpul sebelumnya.
6. Menghapus simpul pertama
Untuk menghapus simpul pertama, maka pointer bantu kita dibuat sama dengan pointer awal.
Kemudian pointer awal kita pindah kesimpul yang ditunjuk oleh pointer pada simpul yang
ditunjuk oleh pointer Bantu. Selanjutnya, simpul yng ditunjuk oleh pointer Bantu kita dispose.
7. Menghapus simpul ditengah atau terakhir.
Untuk menghapus simpul yang berada di tengah senarai berantai, pertama kali kita letakan
pointer Bantu pada simpul di sebelah kiri simpul yang akan dihapus. Simpul yang akan dihapus
kita tunjuk dengan pointer lain. Kemudian, pointer pada simpul yang ditunjuk oleh Bantu kita
tunjukan pada simpul yang ditunju oleh pointer pada simpul yang akan dihapus. Selanjutnya
simpul yang ditunjuk oleh pointer hapus kita dispose.
8. Senarai berantai berkepala
Suatu saat kita perlu meletakan sebuah simpul sebagai simpul pertama dari sebuah senarai
berantai untuk maksud-maksud tertentu. Simpul ini tidak berisi informasi seperti halnya simpul-
simpul lain dalam senarai berantai, tapi keberadaannya sangat diperlukanuntuk lebih
mempercepat proses eksekusi. Simpul yang demikian disebut dengan simpul kepala (Header
Lode) sehingga senarai berantai disebut senarai berantai berkepala (Headed Linked-List)
9. Senarai berantai sebagai tumpukan.
Operasi penambahan simpul baru diawal suatu senarai berantai, sehingga simpul baru adalah
sebagai simpul pertama (harap dibedakan antara simpul kepala dan simpul pertama), serupa
dengan operasi mempush (memasukan elemen kedalam suatu tumpukan. Dalam kedua kasus
ini, elemen baru yang ditambahkan adalah satu-satunya elemen dalam kumpulan elemen yang
bisa segera dimasuk. Tumpukan hanya bisa dimasuk lewat elemen pertama yang menempati
posisi teratas dalam tumpukan, dan senarai berantai hanya bisa dimasuk lewat pointer yang
menuju ke elemen pertama. Demikian juga halnya dengan operasi POP (menghapus elemen dari
suatu tumpukan). Dalam kedua kasus ini hanya elemen pertama yang bisa dimasuk (dihapus),
dan elemen berikutnya menjasi elemen baru yang bisa segera dimasuk setelah elemen
sebelumnya di POP.
Dengan demikian kita bisa menyejikan tumpukan dengan cara lain, yaitu dengan senarai
berantai linear. Elemen pertama dalam senarai berantai diperlakukan sebagai elemen teratas dari
tumpukan. Dengan mengacu pada prosedur PUSH dan POP kita bisa menyusun prosedur PUSH
dan POP yang baru dengan mengingat bahwa kita ingin menyajikan tumpukan menggunakan
senarai berantai.
10. Single linked list
Apabila setiap kali anda ingin menambahkan data selalu dengan menggunakan variabel pointer
yang baru, anda akan membutuhkan banyak sekali variabel pointer (penunjuk). Jika anda hanya
menggunakan satu variabel pointer saja untuk menyimpan banyak data dengan metoda yang
kita sebut linked list. Jika diterjemahkan, maka berarti suatu daftar isi yang saling berhubungan.
Dalam pembuatan single linked list dapat menggunakan dua metoda:
a. LIFO (Last In First Out) aplikasinya : Stack (Tumpukan)
Adalah suatu metoda pembuatan linked list dimana data yang masuk paling akhir adalah data
yang keluar paling awal.
b. FIFO (First In First Out) aplikasinya : Queue (Antrian)
Adala suatu metoda pembuatan linked list dimana data yang masuk paling awal adalah data
yang keluar paling awal juga.
BAB III
KESIMPULAN
1.dibutuhkan ketelitian dalam pembuatan program
2.Operasi-operas pada linked list
a.Buatlist
b.Listkosong
c.Telusurlist//Cetaklist
d.Sisipnode
e.hapusnode
3.Node-2 dalam linked list diurutkan berdasarkan salah satu field dalam node(field kunci)

More Related Content

PDF
5. Doubly Linked List (Struktur Data)
PDF
Contoh soal uts struktur data
PPTX
Analisis Semantik - P 6 Teknik Kompilasi
PDF
7. Queue (Struktur Data)
PPTX
Array 2 Dimensi.pptx
PPTX
Bab 4 aljabar boolean
PDF
Matematika Diskrit - 01 pengantar matematika diskrit
PDF
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
5. Doubly Linked List (Struktur Data)
Contoh soal uts struktur data
Analisis Semantik - P 6 Teknik Kompilasi
7. Queue (Struktur Data)
Array 2 Dimensi.pptx
Bab 4 aljabar boolean
Matematika Diskrit - 01 pengantar matematika diskrit
4.1 Operasi Dasar Singly Linked List 1 (primitive list)

What's hot (20)

PPTX
CFG dan PARSING - P 5 - Teknik Kompilasi
PPTX
Insertion sort
PPT
Jawaban Struktur data soal-latihan
DOC
Modul teknik-digital
PPT
Pertemuan 10
PDF
OPERASI INPUT OUTPUT di Linux
PPTX
Materi sorting(pengurutan)-Dasar-Dasar Pemprograman
PDF
Matematika Diskrit - 09 graf - 05
DOCX
MAKALAH LINKED LIST DALAM BAHASA C.docx
PDF
Pengalokasian Memory
PPT
OPERASI SISTEM BILANGAN.ppt
DOC
Sistem berkas
PDF
basis data lanjut modul
PPTX
4 rekursi
DOCX
Latihan soal struktur data
PDF
Array dan Pointer
PDF
Database minimarket-Garnis Q
PDF
Kd3 penggabungan data sql
PDF
circular linked list
DOCX
Menyederhanakan fungsi boolean dengan menggunakan metode quin1
CFG dan PARSING - P 5 - Teknik Kompilasi
Insertion sort
Jawaban Struktur data soal-latihan
Modul teknik-digital
Pertemuan 10
OPERASI INPUT OUTPUT di Linux
Materi sorting(pengurutan)-Dasar-Dasar Pemprograman
Matematika Diskrit - 09 graf - 05
MAKALAH LINKED LIST DALAM BAHASA C.docx
Pengalokasian Memory
OPERASI SISTEM BILANGAN.ppt
Sistem berkas
basis data lanjut modul
4 rekursi
Latihan soal struktur data
Array dan Pointer
Database minimarket-Garnis Q
Kd3 penggabungan data sql
circular linked list
Menyederhanakan fungsi boolean dengan menggunakan metode quin1
Ad

Viewers also liked (14)

PDF
1 Pendahuluan Struktur Data
PDF
4 pengolahan data array
PPTX
Array searching sorting_pert_11,12,13,14,15
DOCX
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
DOCX
Laporan praktikum
DOCX
Lapopran praktikum struktur data pertemuan 1 Tipe Data
DOCX
Lapopran praktikum struktur data pertemuan 2 Sorting
DOCX
Lapopran praktikum struktur data pertemuan 3 Merge_Sort
PDF
Data Array
DOCX
Makalah Matriks dalam Struktur Data
PDF
Modul mata kuliah konsep dasar pemrograman
DOCX
Makalah pencarian dan pengurutan data
PDF
Buku Ajar Pemrograman Web
DOCX
Pendahuluan, pembahasan, penutup dan daftar pustaka Makalah Algoritma dan Pem...
1 Pendahuluan Struktur Data
4 pengolahan data array
Array searching sorting_pert_11,12,13,14,15
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Laporan praktikum
Lapopran praktikum struktur data pertemuan 1 Tipe Data
Lapopran praktikum struktur data pertemuan 2 Sorting
Lapopran praktikum struktur data pertemuan 3 Merge_Sort
Data Array
Makalah Matriks dalam Struktur Data
Modul mata kuliah konsep dasar pemrograman
Makalah pencarian dan pengurutan data
Buku Ajar Pemrograman Web
Pendahuluan, pembahasan, penutup dan daftar pustaka Makalah Algoritma dan Pem...
Ad

Similar to Laporan Praktikum Struktur Data Modul 3 (20)

PPTX
Linked list
DOC
Modul 3 strukdat
PDF
teori Struktur data full
DOCX
Stack with linked list(algodat)
DOCX
Materi linked list dan bubble sort
PPTX
PDF
Linkedlist
PPT
Linked List.ppt
PDF
Pertemuan 4 revisijan2013-mhs
PPT
Bab 6 singly_linked_list
PDF
Linked List dalam Struktur Data
DOCX
MAKALAH DOUBLE LINKED LIST BAHASA C.docx
PDF
Linked List
DOCX
MAKALAH SINGLE LINKED LIST DALAM BAHASA.docx
PPT
Tistrukdat6
PPTX
Single Linked List - Insert .pptx
PPT
Pertemuan 3 ok
PDF
Double linked list
PPT
Bab 5 linked list
Linked list
Modul 3 strukdat
teori Struktur data full
Stack with linked list(algodat)
Materi linked list dan bubble sort
Linkedlist
Linked List.ppt
Pertemuan 4 revisijan2013-mhs
Bab 6 singly_linked_list
Linked List dalam Struktur Data
MAKALAH DOUBLE LINKED LIST BAHASA C.docx
Linked List
MAKALAH SINGLE LINKED LIST DALAM BAHASA.docx
Tistrukdat6
Single Linked List - Insert .pptx
Pertemuan 3 ok
Double linked list
Bab 5 linked list

More from azmi007 (6)

DOCX
Jarkom md2
DOCX
Jarkom md2
DOC
Sisdig bab 1
DOCX
Sisdig bab 1
DOC
Java
PDF
Tugas Praktikum Java 2
Jarkom md2
Jarkom md2
Sisdig bab 1
Sisdig bab 1
Java
Tugas Praktikum Java 2

Laporan Praktikum Struktur Data Modul 3

  • 1. LAPORAN PRAKTIKUM IMPLEMENTASI STRUKTUR DATA MODUL 3 LINKED LIST Disusun oleh: Muhammad Arif Al’ Azmi 123090069 Plug 9 Asissten / CoAss Widy Sulistianto / Dian Andarini W. TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” YOGYAKARTA 2010
  • 2. BAB I LAPORAN Listing Program : #include <iostream> #include <malloc.h> using namespace std; typedef int typeinfo; typedef struct typenode *typeptr; typedef struct typenode{typeinfo info; typeptr next; }; typeptr awal,akhir; void buatlistbaru(); void sisipdepan(typeinfo IB); void sisipbelakang(typeinfo IB); void sisiptengah(typeinfo IB); void hapuslist(typeinfo IB); void cetaklist(); int main() { buatlistbaru(); sisipdepan(10); sisipbelakang(25); sisipbelakang(100); sisiptengah(50); cetaklist(); hapuslist(50); cetaklist(); return 0; } void buatlistbaru() { typeptr list; list=(typenode *) malloc(sizeof(typenode)); list=NULL; awal=list; akhir=list; } void sisipdepan(typeinfo IB) { typeptr NB; NB=(typenode *) malloc(sizeof(typenode)); NB->info=IB; if (awal==NULL) { awal=NB; akhir=NB; } else { NB->next=awal; } awal=NB; } void sisipbelakang(typeinfo IB) { typeptr NB;
  • 3. NB=(typenode *) malloc(sizeof(typenode)); NB->info=IB; if (awal==NULL) { awal=NB; akhir=NB; } else { akhir->next=NB; } akhir=NB; akhir->next=NULL; } void sisiptengah(typeinfo IB) { typeptr NB, bantu; NB=(typenode *) malloc(sizeof(typenode)); NB->info=IB; NB->next=NULL; if (awal==NULL) { awal=NB; akhir=NB; } else { bantu=awal; while ((IB > bantu->next->info) && (bantu->next!=NULL)) bantu=bantu->next; NB->next=bantu->next; bantu->next=NB; } } void hapuslist(typeinfo IH) { typeptr hapus, bantu; if (awal==NULL) { cout << "List masih kosong!n"; } else { if (awal->info==IH) { hapus=awal; awal=hapus->next; free(hapus); } else { bantu=awal; while ((bantu->next->info!=IH) && (bantu->next!=NULL)) { bantu=bantu->next; } hapus=bantu->next; if (hapus==NULL) { cout << "List tidak ditemukann"; } else { if (hapus==akhir) { akhir=bantu; akhir->next=NULL; } else { bantu->next=hapus->next; } free(hapus); } } } }
  • 4. void cetaklist() { typeptr bantu; bantu=awal; while (bantu!=NULL) { cout << " " << bantu->info; cout << " "; bantu=bantu->next; } } Output : Penjelasan : Pada program di atas, merupakan program linked list bertipe pointer dimana pada program di atas menggunakan library “iostream” (iostream merupakan compiler yang berfungsi mengkompile fungsi “ cin”, “cout”, dll). Setelah menentukan library barulah mendeklarasikan tipe pointer, dan mendeklarasikan struct (merekam data). Setelah selesai mendeklarasikan tipe pointer maka slanjutnya mendeklarasikan fungsi yang nantinya akan digunakan untuk membentuk linked list tersebut. Setealah selesai mendeklarsikan fungsi serta tipe node maka selanjutnya mulai membuat isi program linked list. Di dalam program linked list, saatnya membuat isi list, setelah itu fungsi yang telah di deklarasikan di panggil satu persatu. void buatlistbaru() { typeptr list; list=(typenode *) malloc(sizeof(typenode)); list=NULL; awal=list; akhir=list; } Listing diatas merupakan sebuah pemanggilan fungsi yang digunakan untuk membuat sebuah list. void sisipdepan(typeinfo IB) { typeptr NB; NB=(typenode *) malloc(sizeof(typenode)); NB->info=IB; if (awal==NULL) { awal=NB; akhir=NB; } else { NB->next=awal; }
  • 5. awal=NB; } Listing diatas merupakan sebuah pemanggilan fungsi yang digunakan untuk menyisipkaan node baru di awal urutan node yang telah di buat. void sisipbelakang(typeinfo IB) { typeptr NB; NB=(typenode *) malloc(sizeof(typenode)); NB->info=IB; if (awal==NULL) { awal=NB; akhir=NB; } else { akhir->next=NB; } akhir=NB; akhir->next=NULL; } Listing diatas merupakan sebuah pemanggilan fungsi yang digunakan untuk menyisipkaan node baru di akhir urutan node yang telah di buat. void sisiptengah(typeinfo IB) { typeptr NB, bantu; NB=(typenode *) malloc(sizeof(typenode)); NB->info=IB; NB->next=NULL; if (awal==NULL) { awal=NB; akhir=NB; } else { bantu=awal; while ((IB > bantu->next->info) && (bantu->next!=NULL)) bantu=bantu->next; NB->next=bantu->next; bantu->next=NB; } } Listing diatas merupakan sebuah pemanggilan fungsi yang digunakan untuk menyisipkaan node baru di tengah urutan node yang telah di buat. void hapuslist(typeinfo IH) { typeptr hapus, bantu; if (awal==NULL) { cout << "List masih kosong!n"; } else { if (awal->info==IH) { hapus=awal; awal=hapus->next; free(hapus); }
  • 6. else { bantu=awal; while ((bantu->next->info!=IH) && (bantu->next!=NULL)) { bantu=bantu->next; } hapus=bantu->next; if (hapus==NULL) { cout << "List tidak ditemukann"; } else { if (hapus==akhir) { akhir=bantu; akhir->next=NULL; } else { bantu->next=hapus->next; } free(hapus); } } } } Listing diatas merupakan sebuah pemanggilan fungsi yang digunakan untuk menghapus sebuah node di baghian awal yang telah di buat, dengan menggunakan statement pengendalian. void cetaklist() { typeptr bantu; bantu=awal; while (bantu!=NULL) { cout << " " << bantu->info; cout << " "; bantu=bantu->next; } } Listing diatas merupakan sebuah pemanggilan fungsi yang digunakan untuk mencetak node yang telah di buat termasuk yang telah disisipkan.
  • 7. BAB II TUGAS Artikel Linked List dengan Array Implementasi Struktur Data dalam Linked List Linked list atau senatai berantai adalah kunpulan liniar sejumlah data , atau kumpulan komponen yang disusun secara berurutan pointer. Masing-masing komponen dinamakan dengan simpul (node). Simpul dalam suatu Linked list terbagi menjadi dua bagian yaitu medan informasi yang berisi informasi yang akan disimpan dan diolah, dan medan penyambung (Link field) yang berisi simpul berikutnya. Ada sejumlah operasi yang bisa kita lakukan pada sebuah Linked list yaitu membaca isi link, menambah simpul, menghapus simpul dan mencari informasi pada Linked list . 1. Menambah simpul Operasi menambah simpul bisa dipecah berdasarkan posisi simpul dabu yang akan di sisipkan, yaitu simpul baru selalu diletakkan sebagai simpul pertama, dan simpul baru menyisip diantara kedua simpul yang sudah ada. Berikut contohnya : type Simpul = ^Data ; Data = record Info : char ; Berikut : Simpul ; end ; var Element : char ; Awal, Akhir, Baru : Simpul ; 2. Menambah di Belakang Operasi penambahan simpul pada Linked list adalah penambahan suatu Linked list. Simpul- simpul abru yang ditambahkan selalu menjadi sipmpul terakhir. Prosedur yang bisa dipanggil dengan memanggil prosedur : TAMBAH_BELAKANG (Awal, Akhir, Elemen); Program selengkapnya adalah : procedure TAMBAH_BELAKANG (var Awal, Akhir : Simpul ; Elemen : char ) ; var Baru : Simpul ; begin new (Baru) ; Baru^.Info :=Elemen; if Awal = nil then Awal := Baru else Akhir^.Berikut := Baru; Akhir := Baru; Akhir^.Berikut := nil end ;
  • 8. 3. Menambah didepan Operasi penambahan simpul baru akan selalu diletakkan diawal link. Prosedur untuk menambah simpul bisa dipanggil dengan menggunakan : TAMBAH_DEPAN (Awal, Akhir, Elemen); Program selengkapnya adalah : procedure TAMBAH_DEPAN (var Awal, Akhir : Simpul ; Elemen : char ) ; var Baru : Simpul ; begin new (Baru) ; Baru^.Info :=Elemen; if Awal = nil then Akhir := Baru else Baru^.Berikut := Awal; Awal := Baru; end 4. Menambah ditengah Untuk menembah ditengan linked list memerlukan memerlukan bantuan pointer misalnya bantu, perhatikan contoh program berikut ; procedure TAMBAH_TENGAH(var Awal, Akhir : Simpul ; Elemen : char ) ; var Baru, Bantu : Simpul ; begin new (Baru) ; Baru^.Info :=Elemen; if Awal = nil then begin Awal := Baru; Akhir := Baru; end; else begin Bantu := Awal; while Elemen > Baru^.Berikut^.Info do Bantu := Bantu^.Berikut; Baru^.Berikut := Bantu^.Berikut; Bantu^.Berikut := Baru; end; end ; 5. Menghapus Simpul Operaasi kedua yang akan dijelaskan adalah operasi menghapus simpul. Dalam menghapus simpul ada suatu hal yang perlu diperhatikan, yaitu bahwa simpul yang bias dihapus adalah simpul yang berada sesudah simpul yang ditunjukan oleh suatu pointer, kecuali untuk simpul pertama. Dengan demikian kita tidak bias menghapus simpul yang ditunjuk oleh suatu pointer atau simpul sebelumnya. 6. Menghapus simpul pertama Untuk menghapus simpul pertama, maka pointer bantu kita dibuat sama dengan pointer awal.
  • 9. Kemudian pointer awal kita pindah kesimpul yang ditunjuk oleh pointer pada simpul yang ditunjuk oleh pointer Bantu. Selanjutnya, simpul yng ditunjuk oleh pointer Bantu kita dispose. 7. Menghapus simpul ditengah atau terakhir. Untuk menghapus simpul yang berada di tengah senarai berantai, pertama kali kita letakan pointer Bantu pada simpul di sebelah kiri simpul yang akan dihapus. Simpul yang akan dihapus kita tunjuk dengan pointer lain. Kemudian, pointer pada simpul yang ditunjuk oleh Bantu kita tunjukan pada simpul yang ditunju oleh pointer pada simpul yang akan dihapus. Selanjutnya simpul yang ditunjuk oleh pointer hapus kita dispose. 8. Senarai berantai berkepala Suatu saat kita perlu meletakan sebuah simpul sebagai simpul pertama dari sebuah senarai berantai untuk maksud-maksud tertentu. Simpul ini tidak berisi informasi seperti halnya simpul- simpul lain dalam senarai berantai, tapi keberadaannya sangat diperlukanuntuk lebih mempercepat proses eksekusi. Simpul yang demikian disebut dengan simpul kepala (Header Lode) sehingga senarai berantai disebut senarai berantai berkepala (Headed Linked-List) 9. Senarai berantai sebagai tumpukan. Operasi penambahan simpul baru diawal suatu senarai berantai, sehingga simpul baru adalah sebagai simpul pertama (harap dibedakan antara simpul kepala dan simpul pertama), serupa dengan operasi mempush (memasukan elemen kedalam suatu tumpukan. Dalam kedua kasus ini, elemen baru yang ditambahkan adalah satu-satunya elemen dalam kumpulan elemen yang bisa segera dimasuk. Tumpukan hanya bisa dimasuk lewat elemen pertama yang menempati posisi teratas dalam tumpukan, dan senarai berantai hanya bisa dimasuk lewat pointer yang menuju ke elemen pertama. Demikian juga halnya dengan operasi POP (menghapus elemen dari suatu tumpukan). Dalam kedua kasus ini hanya elemen pertama yang bisa dimasuk (dihapus), dan elemen berikutnya menjasi elemen baru yang bisa segera dimasuk setelah elemen sebelumnya di POP. Dengan demikian kita bisa menyejikan tumpukan dengan cara lain, yaitu dengan senarai berantai linear. Elemen pertama dalam senarai berantai diperlakukan sebagai elemen teratas dari tumpukan. Dengan mengacu pada prosedur PUSH dan POP kita bisa menyusun prosedur PUSH dan POP yang baru dengan mengingat bahwa kita ingin menyajikan tumpukan menggunakan senarai berantai. 10. Single linked list Apabila setiap kali anda ingin menambahkan data selalu dengan menggunakan variabel pointer yang baru, anda akan membutuhkan banyak sekali variabel pointer (penunjuk). Jika anda hanya menggunakan satu variabel pointer saja untuk menyimpan banyak data dengan metoda yang kita sebut linked list. Jika diterjemahkan, maka berarti suatu daftar isi yang saling berhubungan. Dalam pembuatan single linked list dapat menggunakan dua metoda: a. LIFO (Last In First Out) aplikasinya : Stack (Tumpukan) Adalah suatu metoda pembuatan linked list dimana data yang masuk paling akhir adalah data yang keluar paling awal. b. FIFO (First In First Out) aplikasinya : Queue (Antrian) Adala suatu metoda pembuatan linked list dimana data yang masuk paling awal adalah data yang keluar paling awal juga.
  • 10. BAB III KESIMPULAN 1.dibutuhkan ketelitian dalam pembuatan program 2.Operasi-operas pada linked list a.Buatlist b.Listkosong c.Telusurlist//Cetaklist d.Sisipnode e.hapusnode 3.Node-2 dalam linked list diurutkan berdasarkan salah satu field dalam node(field kunci)