pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-p04.pdfpembuatan single linked list non circular...

56
Pertemuan 4 SINGLE LINKED LIST (Non Circular)

Upload: nguyentu

Post on 20-Aug-2019

246 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Pertemuan 4

SINGLE LINKED LIST (Non

Circular)

Page 2: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

KONSEP POINTER DAN LINKED LIST

Untuk mengolah data yang banyaknya tidak

bisa ditentukan sebelumnya, maka

disediakan satu fasilitas yang memungkinan

untuk menggunakan suatu perubah yang

disebut dengan perubah dinamis (Dinamic

variable)

Perubah Dinamis (Dinamic variable)

Suatu perubah yang akan dialokasikan

hanya pada saat diperlukan, yaitu setelah

program dieksekusi.

Page 3: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Perbedaan Perubah Statis & Dinamis

Pada perubah statis, isi Memory pada lokasi tertentu

(nilai perubah) adalah data sesungguhnya yang akan

diolah. Pada perubah dinamis, nilai perubah adalah

alamat lokasi lain yang menyimpan data

sesungguhnya. Dengan demikian data yang

sesungguhnya dapat dimasukkan secara langsung.

Dalam hal cara pemasukkan data dapat diilustrasikan

seperti dibawah ini

Page 4: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

DEKLARASI POINTER

Pointer digunakan sebagai penunjuk ke suatu

alamat memori

Dalam pemrograman C++, Type Data Pointer

dideklarasikan dengan bentuk umum :

Type Data * Nama Variabel;

Type Data dapat berupa sembarang type data,

misalnya char, int atau float. Sedangkan Nama

veriabel merupakan nama variabel pointer

Page 5: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Contoh penggunaan pointer dalam program C++:

Void main()

{

int x,y,*z;

x = 75; //nilai x = 75

y = x; //nilai y diambil dari nilai x

z = &x; //nilai z menunjuk kealamat pointer dari nilai

x

getch();

}

Page 6: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

LINKED LIST (LINKED LIST)

Salah satu Struktur Data Dinamis yang paling

sederhana adalah Linked List atau Struktur Berkait

atau Senarai Berantai, yaitu suatu kumpulan

komponen yang disusun secara berurutan dengan

bantuan Pointer.

Linked List (Senarai Berantai) disebut juga dengan

Senarai Satu Arah (One-Way List). Masing-masing

komponen dinamakan dengan Simpul (Node).

Page 7: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Perbedaan Karakteristik

Array dan Linked List

Page 8: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Setiap simpul dalam suatu Linked List terbagi menjadi dua

bagian,yaitu :

1. Medan Informasi

Berisi informasi yang akan disimpan dan diolah.

2. Medan Penyambung (Link Field)

Berisi alamat berikutnya. Bernilai 0, Jika Link tersebut

tidak menunjuk ke Data (Simpul) lainnya. Penunjuk ini

disebut Penunjuk Nol.

Page 9: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Linked juga mengandung sebuah

variabel penunjuk List, yang biasanya diberi

nama START (AWAL), yang berisi alamat

dari simpul pertama dalam List.

LINKED LIST (LINKED LIST) Lanjutan

Page 10: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Penyajian Linked List dalam Memory

Page 11: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Penyajian Linked List dalam Memory Lanjutan)

Page 12: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Bentuk Node

Single Linked List non Circular

• Single : field pointer-nya hanya satu dan satu arah,pada

akhir node pointernya menunjuk NULL

• Linked List : node-node tersebut saling terhubung satu

sama lain.

Menempati alamat memori tertentu

Page 13: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Single Linked List Non Circular (Lanjutan)

Setiap node pada linked list mempunyai field

yang berisi pointer ke node berikutnya, dan

juga memiliki field yang berisi data.

Node terakhir akan menunjuk ke NULL yang

akan digunakan sebagai kondisi berhenti

pada saat pembacaan isi linked list.

Page 14: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Pembuatan

Single Linked List non Circular

Deklarasi Node :

typedef struct TNode{

int data;

TNode *next;

};

Keterangan:

• Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari TNode

Page 15: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Pembuatan Single Linked List non Circular Lanjutan

Setelah pembuatan struct, buat variabel head

yang bertipe pointer dari TNode yang

berguna sebagai kepala linked list.

Digunakan perintah new untuk

mempersiapkan sebuah node baru berserta

alokasi memorinya, kemudian node tersebut

diisi data dan pointer nextnya ditunjuk ke

NULL.

TNode *baru;

baru = new TNode;

baru->data = databaru;

baru->next = NULL;

Page 16: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Single Linked List non Circular

Menggunakan Head

• Dibutuhkan satu buah variabel pointer : head yang akan

selalu menunjuk pada node pertama

Page 17: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Deklarasi Pointer Penunjuk Head Single Linked List

Manipulasi linked list tidak dapat dilakukanlangsung ke node yang dituju, melainkanharus menggunakan suatu pointer penunjukke node pertama (Head) dalam linked list

Deklarasinya sebagai berikut:

TNode *head;

Page 18: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Fungsi Inisialisasi Single Linked List

void init()

{

head = NULL;

}

Function untuk mengetahui kondisi SingleLinked List

Jika pointer head tidak menunjuk pada suatu nodemaka kosong

int isEmpty()

{

if (head == NULL) return 1;

else return 0;

}

Page 19: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Single Linked List Non Circular dengan Head

Menambah Node di Depan

Penambahan node baru akan dikaitan dinode paling depan, namun pada saatpertama kali (data masih kosong), makapenambahan data dilakukan dengan cara:node head ditunjukkan ke node barutersebut.

Prinsipnya adalah mengkaitkan node barudengan head, kemudian head akanmenunjuk pada data baru tersebutsehingga head akan tetap selalu menjadidata terdepan.

Page 20: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Single Linked List Non Circular dengan Head

void insertDepan(int databaru)

{

TNode *baru;

baru = new TNode;

baru->data = databaru;

baru->next = NULL;

if(isEmpty()==1)

{

head=baru;

head->next = NULL;

}

else

{

baru->next = head;

head = baru;

}

printf(”Data masuk\n”);

}

Page 21: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Ilustrasi Penambahan Node Didepan

Page 22: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Ilustrasi Penambahan node didepan (lanjutan)

Page 23: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Single Linked List Non Circular dengan Head

Menambah Node di Belakang

Penambahan data dilakukan di belakang,namun pada saat pertama kali, nodelangsung ditunjuk oleh head.

Penambahan di belakang membutuhkanpointer bantu untuk mengetahui nodeterbelakang. Kemudian, dikaitkan dengannode baru.

Untuk mengetahui data terbelakang perludigunakan perulangan.

Page 24: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Single Linked List Non Circular dengan Head

void insertBelakang (int databaru)

{

TNode *baru,*bantu;

baru = new TNode;

baru->data = databaru;

baru->next = NULL;

if(isEmpty()==1) {

head=baru;

head->next = NULL;

}

else {

bantu=head;

while(bantu->next!=NULL){

bantu=bantu->next;

}

bantu->next = baru;

}

printf("Data masuk\n“);

}

Page 25: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Ilustrasi Penambahan Node Dibelakang

Page 26: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Ilustrasi Penambahan node di belakang

Page 27: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Menghapus Node di Depan

• Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka harus dilakukan penggunakan suatu pointer lain (hapus) yang digunakan untuk menunjuk node yang akan dihapus, barulah kemudian menghapus pointer hapus dengan menggunakan perintah delete.

• Sebelum data terdepan dihapus, terlebih dahulu head harus menunjuk ke node berikutnya agar list tidak putus, sehingga node setelah head lama akan menjadi head baru

• Jika head masih NULL maka berarti data masih kosong!

Page 28: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Menghapus Node Di depan

void hapusDepan ()

{

TNode *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;

}

printf(“%d terhapus\n“,d);

} else cout<<"Masih kosong\n";

}

Page 29: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Ilustrasi menghapus node di depan

Page 30: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Menghapus Node di Belakang

• Membutuhkan pointer bantu dan hapus. Pointer hapus

digunakan untuk menunjuk node yang akan dihapus,

pointer bantu untuk menunjuk node sebelum node yang

dihapus yang akan menjadi node terakhir.

• Pointer bantu digunakan untuk menunjuk ke nilai NULL.

Pointer bantu selalu bergerak sampai sebelum node

yang akan dihapus, kemudian pointer hapus diletakkan

setelah pointer bantu. Selanjutnya pointer hapus akan

dihapus, pointer bantu akan menunjuk ke NULL.

Page 31: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Menghapus Node di Belakang

void hapusBelakang(){

TNode *hapus,*bantu;

int d;

if (isEmpty()==0){

if(head->next != NULL){

bantu = head;

while(bantu->next->next!=NULL){

bantu = bantu->next;

}

hapus = bantu->next;

d = hapus->data;

bantu->next = NULL;

delete hapus;

} else {

d = head->data;

head = NULL;

}

printf(“%d terhapus\n“,d);

} else printf(“Masih kosong\n“);

}

Page 32: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Ilustrasi menghapus node di belakang

Page 33: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Function untuk menghapus semua elemen

Linked List

void clear()

{

TNode *bantu,*hapus;

bantu = head;

while(bantu!=NULL)

{

hapus = bantu;

bantu = bantu->next;

delete hapus;

}

head = NULL;

}

Page 34: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Menampilkan / Membaca

Isi Linked List

• Linked list ditelusuri satu-persatu dari awal sampai akhir node. Penelusuran dilakukan dengan menggunakan pointer bantu, karena pointer head yang menjadi tanda awal list tidak boleh berubah/berganti posisi.

• Penelusuran dilakukan terus sampai ditemukan node terakhir yang menunjuk ke nilai NULL.

Jika tidak NULL, maka node bantu akan berpindah ke node selanjutnya dan membaca isi datanya dengan menggunakan field next sehingga dapat saling berkait.

• Jika head masih NULL berarti data masih kosong!

Page 35: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Menampilkan / Membaca

Isi Linked List

void tampil(){

TNode *bantu;

bantu = head;

if(isEmpty()==0){

while(bantu!=NULL){

cout<<bantu->data<<"";

bantu=bantu->next;

}

printf(“\n”);

} else printf(“Masih kosong\n“);

}

Page 36: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Single Linked List non Circular Menggunakan Head

dan Tail

Dibutuhkan dua variabel pointer : head dan tail

Head selalu menunjuk pada node pertama, sedangkan tailselalu menunjuk pada node terakhir.

Kelebihan dari Single Linked List dengan Head & Tail adalahpada penambahan data di belakang, hanya dibutuhkan tailyang mengikat node baru saja tanpa harus menggunakanperulangan pointer bantu.

Page 37: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Single Linked List non Circular Menggunakan Head

dan Tail

Inisialisasi Linked List

TNode *head, *tail;

Fungsi Inisialisasi Linked List

void init(){

head = NULL;

tail = NULL;

}

Function untuk mengetahui kondisi LinkedList kosong /tidak

int isEmpty(){

if(tail == NULL) return 1;

else return 0;

}

Page 38: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

void insertDepan(int databaru){

TNode *baru;

baru = new TNode;

baru->data = databaru;

baru->next = NULL;

if(isEmpty()==1){

head=tail=baru;

tail->next=NULL;

}

else {

baru->next = head;

head = baru;

}

printf(”Data masuk\n”);

}

Menambah Node di depan dengan Haid dan Tail

Page 39: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Ilustrasi penambahan node didepan dengan Head

dan Tail

Page 40: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Ilustrasi Penambahan node di depan dengan Head

dan Tail

Page 41: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Menambah Node di Belakang

Dengan Head dan Tail

void tambahBelakang(int databaru){

TNode *baru,*bantu;

baru = new TNode;

baru->data = databaru;

baru->next = NULL;

if(isEmpty()==1){

head=baru;

tail=baru;

tail->next = NULL;

}

else {

tail->next = baru;

tail=baru;

}

printf("Data masuk\n“);

}

Page 42: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Ilustrasi penambahan node di depan dengan Head

dan Tail

Page 43: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Ilustrasi Penamabahan node di depan dengan Head

dan Tail

Page 44: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Menghapus Node di Depan (Dengan Head dan Tail)

Penghapusan node tidak boleh dilakukan jika

keadaan node sedang ditunjuk oleh pointer,

maka harus dilakukan penunjukkan terlebih

dahulu dengan pointer hapus pada head,

kemudian dilakukan pergeseran head ke

node berikutnya sehingga data setelah head

menjadi head baru, kemudian menghapus

pointer hapus dengan menggunakan perintah

delete.

Jika tail masih NULL maka berarti list masih

kosong!

Page 45: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Menghapus Node didepan dengan Head dan Tail

void hapusDepan(){

TNode *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;

}

printf(“%d terhapus\n“,d);

} else printf("Masih kosong\n“);

}

Page 46: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Ilustrasi menghapus node didepan dengan Head

dan Tail

Page 47: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Menghapus Node di Belakang (Dengan Head dan

Tail)

Penghapusan node tidak boleh dilakukan jikakeadaan node sedang ditunjuk oleh pointer, makaharus dilakukan penunjukkan terlebih dahuludengan variabel hapus pada tail. Jika tail masihNULL maka berarti list masih kosong!

Dibutuhkan pointer bantu untuk membantupergeseran dari head ke node berikutnya sampaisebelum tail, sehingga tail dapat ditunjukkan kebantu, dan bantu tersebut akan menjadi tail yangbaru.

Setelah itu hapus pointer hapus denganmenggunakan perintah delete.

Page 48: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Menghapus Node dibelakang dengan Head dan Tailvoid hapusBelakang(){

TNode *bantu,*hapus;

int d;

if (isEmpty()==0){

bantu = head;

if(head!=tail){

while(bantu->next!=tail){

bantu = bantu->next;

}

hapus = tail;

tail=bantu;

d = hapus->data;

delete hapus;

tail->next = NULL;

}else {

d = tail->data;

head=tail=NULL;

}

cout<<d<<" terhapus\n";

} else cout<<"Masih kosong\n";

}

Page 49: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

null

Ilustrasi Menghapus node di belakang

Page 50: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Function untuk menghapus semua elemen

LinkedList dengan HEAD & TAIL

void clear()

{

TNode *bantu,*hapus;

bantu = head;

while(bantu!=NULL)

{

hapus = bantu;

bantu = bantu->next;

delete hapus;

}

head = NULL;

tail = NULL;

}

Page 51: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Latihan Soal I Struktur Data

(Pertemuan 4)

1. Diketahui suatu deklarasi variabel int x,y,*z;

variabel yang merupakan penunjuk ke pointer adalah :

a. x d. x dan y

b. y e. x, y dan z

c. z

2. Perintah yang tepat untuk mempersiapkan sebuah node baru berserta alokasi memorinya, adalah ….

a. Create d. New

b. Null e. Insert

c. Input

Page 52: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

2. Perintah yang tepat untuk mempersiapkan sebuah node baru berserta alokasi memorinya, adalah ….

a. Create d. New

b. Null e. Insert

c. Input

3. Jika Tail = Null, maka kondisi Linked List adalah :

a. Penuh d. Tidak dapat ditambah

b. Kosong e. Baru

c. Terisi

Page 53: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

3. Jika Tail = Null, maka kondisi Linked List adalah :

a. Penuh d. Tidak dapat ditambah

b. Kosong e. Baru

c. Terisi

4.

Gambar diatas menunjukkan bentuk penghapusan node pada posisi :

a. Belakang d. Tengah dan Depan

b. Depan e. Depan dan Belakang

c. Tengah

Page 54: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

4.

Gambar diatas menunjukkan bentuk penambahan node pada posisi :

a. Belakang d. Tengah dan Depan

b. Depan e. Depan dan Belakang

c. Tengah

5. Perintah yang tepat untuk menyatakan Linked list berada dalam kondisi kosong, adalah ….

a. head=tail d. bantu=head

b. head=tail=null e. bantu=tail

c. bantu=null

Page 55: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

5. Perintah yang tepat untuk menyatakan Linked list berada dalam kondisi kosong, adalah ….

a. head=tail d. bantu=head

b. head=tail=null e. bantu=tail

c. bantu=null

1. Diketahui suatu deklarasi variabel int x,y,*z;

variabel yang merupakan penunjuk ke pointer adalah :

a. x d. x dan y

b. y e. x, y dan z

c. z

Page 56: Pertemuan 4 - univbsi.idunivbsi.id/pdf/2017/307/307-P04.pdfPembuatan Single Linked List non Circular Lanjutan Setelahpembuatanstruct,buatvariabelhead yang bertipe pointer dari TNode

Latihan II Soal Struktur Data

(Review Materi Pertemuan 4)

Dikumpulkan pada pertemuan selanjutnya

Buatlah Ilustrasi / Penggambaran untuk

menambah dan menghapus node di posisi tengah

pada :

1. Single Linked List dengan Head

2. Single Linked List dengan Head & Trail