SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
LINKED LIST (SENARAI BERKAIT) 
Pengertian Linked List 
Salah satu bentuk struktur data yang berisi kumpulan data yang tersusun secara sekuensial, saling bersambungan, dinamis adalah senarai berkait (linked list).Suatu senarai berkait (linked list) adalah suatu simpul (node) yang dikaitkan dengan simpul yang lain dalam suatu urutan tertentu. Suatu simpul dapat berbentuk suatu struktur atau class. Simpul harus mempunyai satu atau lebih elemen struktur atau classyang berisi data. 
Secara teori, linked list adalah sejumlah node yang dihubungkan secara linier dengan bantuanpointer. Dikatakansingle linked apabila hanya ada satu pointer yangmenghubungkan setiap node.singleartinya field pointernya hanya satu buah saja dan satu arah. 
Senarai berkait adalah struktur data yang paling dasar. Senarai berkait terdiri atas sejumlah unsur-unsur dikelompokkan, atau terhubung, bersama-sama di suatu deret yang spesifik. Senarai berkait bermanfaat di dalam memelihara koleksi-koleksi data, yang serupa dengan array/larik yang sering digunakan. Bagaimanapun juga, senarai berkait memberikan keuntungan-keuntungan penting yang melebihi array/larik dalam banyak hal. Secara rinci, senarai berkait lebih efisien di dalam melaksanakan penyisipan-penyisipan dan penghapusan-penghapusan. Senarai berkait juga menggunakan alokasi penyimpanan secara dinamis, yang merupakan penyimpanan yang dialokasikan pada runtime . Karena di dalam banyak aplikasi, ukuran dari data itu tidak diketahui pada saat kompile, hal ini bisa merupakan suatu atributyang baik juga. Setiapnodeakan berbentuk struct dan memiliki satu buahfield bertipe structyang sama, yang berfungsi sebagai pointer. Dalam menghubungkan setiap node, kita dapat menggunakan cara first-create- first-access ataupun first-create-last-access. Yang berbeda dengan deklarasi struct sebelumnya adalah satu field bernama next, yang bertipe struct node. Hal ini sekilas dapat membingungkan. Namun, satu hal yang jelas, variabel next ini akan menghubungkan kita dengan node di sebelah kita, yang juga bertipe struct node.Hal inilah yang menyebabkan next harus bertipe struct node 
Deklarasi node: 
struct node 
{ 
char nama[20]; 
int umur; 
float tinggi; 
node *next; // Pointer menyambung ke node selanjutnya 
}; 
Gambar sebuah node:
data point data point data 
1. Bagian pertama, disebut medan informasi, berisi informasi yang akan disimpan dan 
diolah. 
2. Bagian kedua, disebut medan penyambung (link field), berisi alamat simpul berikutnya 
Pada gambar di atas, pointer awal menunjuk ke simpul pertama dari senerai tersebut. 
Medan penyambung (pointer) dari suatu simpul yang tidak menunjuk simpul lain disebut 
pointer kosong, yang nilainya dinyatakan sebagai null (null adalah kata baku yang berarti 
bahwa pointer 0 atau bilangan negatif). Jadi kita bisa melihat bahwa dengan hanya sebuah 
pointer Awal saja maka kita bisa membaca semua informasi yang tersimpan dalam senerai 
MENAMBAH SIMPUL DI BELAKANG 
Sekarang kita akan mempelajari bagaimana menambah simpul baru ke dalam senerai 
berantai. Kita anggap bahwa simpul baru yang akan ditambah selalu menempati posisi 
setelah posisi yang terakhir dari senerai berantai yang diketahui. Untuk menjelaskan operasi 
ini baiklah kita gunakan deklarasi pointer dan simpul seperti di bawah ini: 
struct node 
{ 
char nama[20]; 
int umur; 
float tinggi; 
node *next; 
}; 
Menambahkan simpul diakhir list 
Misalkan simpul baru yang dibentuk diberi nama temp. Untuk menambahkan simpul 
baru perlu kita uji apakah Linked list masih kosong atau tidak. Linked list yang kosong 
ditandai dengan awal_ptr bernilai NULL. Jika tidak kosong maka dibaca senarai yang ada 
mulai dari posisi awal sampai terakhir misalkan dengan menggunakan pointer temp2. Simpul 
terakhir ditandai dengan medan penyambung dari temp2 bernilai NULL.Jika sudah berada 
pada simpul terakhir kita tunjukkan medan penyambung temp2 dengan temp. 
Program lengkap menambahkan simpul diakhit senarai sebagai berikut: 
node *temp, *temp2; // pointer sementara 
// Isi data 
temp = new node; //menciptakan node baru 
cout << "Nama : ";cin >> temp->nama; 
cout << "Umur : ";cin >> temp->umur; 
cout << "Tinggi : ";cin >> temp->tinggi; 
temp->next = NULL; 
// Inisialisasi pointer ketika masih kosong 
if (awal_ptr == NULL) 
{
awal_ptr = temp; 
posisi = awal_ptr; 
} 
else 
{ 
temp2 = awal_ptr; 
// list tidak kosong 
while (temp2->next != NULL) 
{ 
temp2 = temp2->next; 
// pindah ke link berikutnya 
} 
temp2->next = temp; 
} 
Menghapus simpul diakhir list kita gunakan car a sebagai berikut : 
Untuk menghapus simpul diakhir perlu kita uji apakah senarai masih kosong atau tidak, jika kosong tampilkan pesan bahwa list masih kosong. Jika tidak kosong perlu diuji apakah jumlah simpul dalam senarai hanya satu yang ditandai dengan medan penyambung yang bernilai null. Jika simpul lebih dari saru maka dibaca semua simpul sampai simpul terakhir yaitu medan penyambung bernilai null. 
node *temp1, *temp2; 
if (awal_ptr == NULL) 
cout << "List kosong!" << endl; 
else 
{ 
temp1 = awal_ptr; 
if (temp1->next == NULL) 
{ 
delete temp1; 
awal_ptr = NULL; 
} 
else 
{ 
while (temp1->next != NULL) 
{ 
temp2 = temp1; 
temp1 = temp1->next; 
} 
delete temp1; 
temp2->next = NULL; 
} 
} 
Menghapus simpul diawallist
Menghapus simpul diawal dilakukan dengan cara menampung simpul awal pada pointer temp, kemudian mengarahkan awal_ptr ke simpul selanjutnya. Kemudian simpul yang ditampung dalam pointer temp dihapus. 
node *temp; 
temp = awal_ptr; 
awal_ptr = awal_ptr->next; 
delete temp; 
Menampilkan list 
Sebelum menampilkan linked list perlu kita uji apakah senarai kosong atau tidak. Jika senarai kosong kita tampilkan pesan bahwa List kosong. Jika senarai tidak kosong maka kita baca senarai mulai posisi awal sampai simpul terakhir. 
node *temp; 
temp = awal_ptr; 
cout << endl; 
if (temp == NULL) 
cout << "List kosong!" << endl; 
else 
{ 
while (temp != NULL) 
{ 
// Menampilkan isi 
cout << "Nama : " << temp->nama << " "; 
cout << "Umur : " << temp->umur << " "; 
cout << "Tinggi : " << temp->tinggi; 
if (temp == posisi) 
cout << " <– Posisi node"; 
cout << endl; 
temp = temp->next; 
} 
cout << "Akhir list!" << endl; 
} 
#include <iostream.h> 
struct node 
{ 
char nama[20]; 
int umur; 
float tinggi; 
node *next; 
}; 
node *awal_ptr=NULL; 
node *posisi; 
int pilih; 
void tambah_simpul_akhir() 
{ 
node *temp, *temp2; //simpul sementara 
//isi data 
temp=new node;
cout<<"Nama : ";cin>>temp->nama; 
cout<<"Umur : ";cin>>temp->umur; 
cout<<"Tinggi : ";cin>>temp->tinggi; 
temp->next=NULL; 
//inisialisasi pointer ketika kosong 
if(awal_ptr==NULL) 
{ 
awal_ptr=temp; 
posisi=awal_ptr; 
} 
else 
{ 
temp2=awal_ptr; 
while(temp2->next != NULL) 
{ 
temp2 = temp2->next; 
} 
temp2->next=temp; 
} 
} 
void tampil_senarai() 
{ 
node *temp; 
temp = awal_ptr; 
if(temp == NULL) 
cout<<"List kosong"<<endl; 
else 
{ 
cout<<endl<<endl; 
while(temp != NULL) 
{ 
cout<<"Nama : "<<temp->nama<<" "; 
cout<<"Umur : "<<temp->umur<<" "; 
cout<<"Tinggi : "<<temp->tinggi; 
if (temp == posisi) 
cout<<" << posisi simpul"; 
cout<<endl; 
temp=temp->next; 
} 
cout<<"Akhir list"<<endl; 
} 
} 
void hapus_simpul_akhir() 
{ 
node *temp1, *temp2; 
if (awal_ptr == NULL) 
cout << "List kosong!" << endl; 
else 
{ 
temp1 = awal_ptr; 
if (temp1->next == NULL) 
{ 
delete temp1; 
awal_ptr = NULL; 
} 
else 
{ 
while (temp1->next != NULL) 
{ 
temp2 = temp1; 
temp1 = temp1->next;
} 
delete temp1; 
temp2->next = NULL; 
} 
} 
} 
void hapus_simpul_awal() 
{ 
node *temp; 
temp = awal_ptr; 
awal_ptr = awal_ptr->next; 
delete temp; 
} 
void main() 
{ 
awal_ptr=NULL; 
do 
{ 
tampil_senarai(); 
cout<<"Menu Pilihan"<<endl; 
cout<<"0. Keluar program"<<endl; 
cout<<"1. Tambah simpul akhir"<<endl; 
cout<<"2. Hapus simpul akhir"<<endl; 
cout<<"3. Hapus simpul awal"<<endl; 
cout<<"Pilihan >> ";cin>>pilih; 
switch(pilih) 
{ 
case 1: tambah_simpul_akhir();break; 
case 2: hapus_simpul_akhir();break; 
case 3: hapus_simpul_awal();break; 
} 
}while(pilih !=0); 
#include <iostream.h> 
struct node 
{ 
char nama[20]; 
int umur; 
float tinggi; 
node *next; 
}; 
node *awal_ptr=NULL; 
node *posisi; 
int pilih; 
void tambah_simpul_akhir() 
{ 
node *temp, *temp2; //simpul sementara 
//isi data 
temp=new node; 
cout<<"Nama : ";cin>>temp->nama; 
cout<<"Umur : ";cin>>temp->umur; 
cout<<"Tinggi : ";cin>>temp->tinggi; 
temp->next=NULL; 
//inisialisasi pointer ketika kosong 
if(awal_ptr==NULL) 
{ 
awal_ptr=temp; 
posisi=awal_ptr;
} 
else 
{ 
temp2=awal_ptr; 
while(temp2->next != NULL) 
{ 
temp2 = temp2->next; 
} 
temp2->next=temp; 
} 
} 
void tampil_senarai() 
{ 
node *temp; 
temp = awal_ptr; 
if(temp == NULL) 
cout<<"List kosong"<<endl; 
else 
{ 
cout<<endl<<endl; 
while(temp != NULL) 
{ 
cout<<"Nama : "<<temp->nama<<" "; 
cout<<"Umur : "<<temp->umur<<" "; 
cout<<"Tinggi : "<<temp->tinggi; 
if (temp == posisi) 
cout<<" << posisi simpul"; 
cout<<endl; 
temp=temp->next; 
} 
cout<<"Akhir list"<<endl; 
} 
} 
void hapus_simpul_akhir() 
{ 
node *temp1, *temp2; 
if (awal_ptr == NULL) 
cout << "List kosong!" << endl; 
else 
{ 
temp1 = awal_ptr; 
if (temp1->next == NULL) 
{ 
delete temp1; 
awal_ptr = NULL; 
} 
else 
{ 
while (temp1->next != NULL) 
{ 
temp2 = temp1; 
temp1 = temp1->next; 
} 
delete temp1; 
temp2->next = NULL; 
} 
} 
} 
void hapus_simpul_awal() 
{ 
node *temp;
temp = awal_ptr; 
awal_ptr = awal_ptr->next; 
delete temp; 
} 
void main() 
{ 
awal_ptr=NULL; 
do 
{ 
tampil_senarai(); 
cout<<"Menu Pilihan"<<endl; 
cout<<"0. Keluar program"<<endl; 
cout<<"1. Tambah simpul akhir"<<endl; 
cout<<"2. Hapus simpul akhir"<<endl; 
cout<<"3. Hapus simpul awal"<<endl; 
cout<<"Pilihan >> ";cin>>pilih; 
switch(pilih) 
{ 
case 1: tambah_simpul_akhir();break; 
case 2: hapus_simpul_akhir();break; 
case 3: hapus_simpul_awal();break; 
} 
}while(pilih !=0); 
} 
}

Mais conteúdo relacionado

Mais procurados

Penggunaan editor nano
Penggunaan editor nanoPenggunaan editor nano
Penggunaan editor nanoalfarition
 
Fungsi dan Array Pada C++
Fungsi dan Array Pada C++Fungsi dan Array Pada C++
Fungsi dan Array Pada C++Toro Jr.
 
5 6 single-linked_list
5 6 single-linked_list5 6 single-linked_list
5 6 single-linked_listWandi Parlente
 
Modul Sistem Operasi Semaphore
Modul Sistem Operasi SemaphoreModul Sistem Operasi Semaphore
Modul Sistem Operasi SemaphoreDEDE IRYAWAN
 
20111221 algoritma kriptografimodern-part1-1-2
20111221 algoritma kriptografimodern-part1-1-220111221 algoritma kriptografimodern-part1-1-2
20111221 algoritma kriptografimodern-part1-1-2Sunyo Andriyanto
 
Kriptografi - Algoritma Kriptografi Modern
Kriptografi - Algoritma Kriptografi ModernKriptografi - Algoritma Kriptografi Modern
Kriptografi - Algoritma Kriptografi ModernKuliahKita
 
Belajar perulangan di delphi 7
Belajar perulangan di delphi 7Belajar perulangan di delphi 7
Belajar perulangan di delphi 7Elan Mailiyanto
 
Prakt modul 9 sym kriptografi
Prakt modul 9 sym kriptografiPrakt modul 9 sym kriptografi
Prakt modul 9 sym kriptografiKeisha Khairani
 

Mais procurados (11)

Penggunaan editor nano
Penggunaan editor nanoPenggunaan editor nano
Penggunaan editor nano
 
Pointer
PointerPointer
Pointer
 
Fungsi dan Array Pada C++
Fungsi dan Array Pada C++Fungsi dan Array Pada C++
Fungsi dan Array Pada C++
 
5 6 single-linked_list
5 6 single-linked_list5 6 single-linked_list
5 6 single-linked_list
 
Modul Sistem Operasi Semaphore
Modul Sistem Operasi SemaphoreModul Sistem Operasi Semaphore
Modul Sistem Operasi Semaphore
 
20111221 algoritma kriptografimodern-part1-1-2
20111221 algoritma kriptografimodern-part1-1-220111221 algoritma kriptografimodern-part1-1-2
20111221 algoritma kriptografimodern-part1-1-2
 
Kriptografi - Algoritma Kriptografi Modern
Kriptografi - Algoritma Kriptografi ModernKriptografi - Algoritma Kriptografi Modern
Kriptografi - Algoritma Kriptografi Modern
 
String baru
String baruString baru
String baru
 
Belajar perulangan di delphi 7
Belajar perulangan di delphi 7Belajar perulangan di delphi 7
Belajar perulangan di delphi 7
 
Function pada PHP
Function pada PHPFunction pada PHP
Function pada PHP
 
Prakt modul 9 sym kriptografi
Prakt modul 9 sym kriptografiPrakt modul 9 sym kriptografi
Prakt modul 9 sym kriptografi
 

Destaque

Destaque (16)

Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3
 
Modul 2 toolnetwork
Modul 2 toolnetworkModul 2 toolnetwork
Modul 2 toolnetwork
 
tugas struktur data
tugas struktur datatugas struktur data
tugas struktur data
 
Praktikum Sistem Operasi Linux (2)
Praktikum Sistem Operasi Linux (2)Praktikum Sistem Operasi Linux (2)
Praktikum Sistem Operasi Linux (2)
 
Queue
QueueQueue
Queue
 
Venkatesh2003
Venkatesh2003Venkatesh2003
Venkatesh2003
 
68 256-1-pb
68 256-1-pb68 256-1-pb
68 256-1-pb
 
01 review dan intro struktur data
01   review dan intro struktur data01   review dan intro struktur data
01 review dan intro struktur data
 
Materi : Struktur Data (3 Sort)
Materi : Struktur Data (3 Sort)Materi : Struktur Data (3 Sort)
Materi : Struktur Data (3 Sort)
 
Format rpkps
Format rpkpsFormat rpkps
Format rpkps
 
Struktur data 1
Struktur data 1Struktur data 1
Struktur data 1
 
Landasan Teori Penelitian
Landasan Teori PenelitianLandasan Teori Penelitian
Landasan Teori Penelitian
 
Queue
QueueQueue
Queue
 
Materi : Struktur Data (2 Array)
Materi : Struktur Data (2 Array)Materi : Struktur Data (2 Array)
Materi : Struktur Data (2 Array)
 
Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)
 
Seminar: PHP Developer for Dummies
Seminar: PHP Developer for DummiesSeminar: PHP Developer for Dummies
Seminar: PHP Developer for Dummies
 

Semelhante a Linked List (Senarai Berkait) Pengertian dan Contoh Program C

Semelhante a Linked List (Senarai Berkait) Pengertian dan Contoh Program C (20)

Tugas kelompok mi d3_sore
Tugas kelompok mi d3_soreTugas kelompok mi d3_sore
Tugas kelompok mi d3_sore
 
Algoritma dan Struktur Data - list
Algoritma dan Struktur Data - listAlgoritma dan Struktur Data - list
Algoritma dan Struktur Data - list
 
Algoritma dan Struktur Data - List
Algoritma dan Struktur Data - ListAlgoritma dan Struktur Data - List
Algoritma dan Struktur Data - List
 
Algorithms and Data Structures
 Algorithms and Data Structures Algorithms and Data Structures
Algorithms and Data Structures
 
MAKALAH LINKED LIST DALAM BAHASA C.docx
MAKALAH LINKED LIST DALAM BAHASA C.docxMAKALAH LINKED LIST DALAM BAHASA C.docx
MAKALAH LINKED LIST DALAM BAHASA C.docx
 
Pertemuan 4 revisijan2013-mhs
Pertemuan 4 revisijan2013-mhsPertemuan 4 revisijan2013-mhs
Pertemuan 4 revisijan2013-mhs
 
Linked list
Linked listLinked list
Linked list
 
Modul 2
Modul 2Modul 2
Modul 2
 
Tistrukdat6
Tistrukdat6Tistrukdat6
Tistrukdat6
 
Resume praktikum 5__linked_list
Resume praktikum 5__linked_listResume praktikum 5__linked_list
Resume praktikum 5__linked_list
 
Tistrukdat7
Tistrukdat7Tistrukdat7
Tistrukdat7
 
Tistrukdat8 2
Tistrukdat8 2Tistrukdat8 2
Tistrukdat8 2
 
11
1111
11
 
Modul 3 strukdat
Modul 3 strukdatModul 3 strukdat
Modul 3 strukdat
 
3 stack2
3 stack23 stack2
3 stack2
 
Tistrukdat8 1
Tistrukdat8 1Tistrukdat8 1
Tistrukdat8 1
 
Pert.5 linked list
Pert.5 linked listPert.5 linked list
Pert.5 linked list
 
Stack with linked list(algodat)
Stack with linked list(algodat)Stack with linked list(algodat)
Stack with linked list(algodat)
 
Presentasi Kelompok 3 TI-D algorithm.docx
Presentasi Kelompok 3 TI-D algorithm.docxPresentasi Kelompok 3 TI-D algorithm.docx
Presentasi Kelompok 3 TI-D algorithm.docx
 
Bab 5 linked list
Bab 5 linked listBab 5 linked list
Bab 5 linked list
 

Linked List (Senarai Berkait) Pengertian dan Contoh Program C

  • 1. LINKED LIST (SENARAI BERKAIT) Pengertian Linked List Salah satu bentuk struktur data yang berisi kumpulan data yang tersusun secara sekuensial, saling bersambungan, dinamis adalah senarai berkait (linked list).Suatu senarai berkait (linked list) adalah suatu simpul (node) yang dikaitkan dengan simpul yang lain dalam suatu urutan tertentu. Suatu simpul dapat berbentuk suatu struktur atau class. Simpul harus mempunyai satu atau lebih elemen struktur atau classyang berisi data. Secara teori, linked list adalah sejumlah node yang dihubungkan secara linier dengan bantuanpointer. Dikatakansingle linked apabila hanya ada satu pointer yangmenghubungkan setiap node.singleartinya field pointernya hanya satu buah saja dan satu arah. Senarai berkait adalah struktur data yang paling dasar. Senarai berkait terdiri atas sejumlah unsur-unsur dikelompokkan, atau terhubung, bersama-sama di suatu deret yang spesifik. Senarai berkait bermanfaat di dalam memelihara koleksi-koleksi data, yang serupa dengan array/larik yang sering digunakan. Bagaimanapun juga, senarai berkait memberikan keuntungan-keuntungan penting yang melebihi array/larik dalam banyak hal. Secara rinci, senarai berkait lebih efisien di dalam melaksanakan penyisipan-penyisipan dan penghapusan-penghapusan. Senarai berkait juga menggunakan alokasi penyimpanan secara dinamis, yang merupakan penyimpanan yang dialokasikan pada runtime . Karena di dalam banyak aplikasi, ukuran dari data itu tidak diketahui pada saat kompile, hal ini bisa merupakan suatu atributyang baik juga. Setiapnodeakan berbentuk struct dan memiliki satu buahfield bertipe structyang sama, yang berfungsi sebagai pointer. Dalam menghubungkan setiap node, kita dapat menggunakan cara first-create- first-access ataupun first-create-last-access. Yang berbeda dengan deklarasi struct sebelumnya adalah satu field bernama next, yang bertipe struct node. Hal ini sekilas dapat membingungkan. Namun, satu hal yang jelas, variabel next ini akan menghubungkan kita dengan node di sebelah kita, yang juga bertipe struct node.Hal inilah yang menyebabkan next harus bertipe struct node Deklarasi node: struct node { char nama[20]; int umur; float tinggi; node *next; // Pointer menyambung ke node selanjutnya }; Gambar sebuah node:
  • 2. data point data point data 1. Bagian pertama, disebut medan informasi, berisi informasi yang akan disimpan dan diolah. 2. Bagian kedua, disebut medan penyambung (link field), berisi alamat simpul berikutnya Pada gambar di atas, pointer awal menunjuk ke simpul pertama dari senerai tersebut. Medan penyambung (pointer) dari suatu simpul yang tidak menunjuk simpul lain disebut pointer kosong, yang nilainya dinyatakan sebagai null (null adalah kata baku yang berarti bahwa pointer 0 atau bilangan negatif). Jadi kita bisa melihat bahwa dengan hanya sebuah pointer Awal saja maka kita bisa membaca semua informasi yang tersimpan dalam senerai MENAMBAH SIMPUL DI BELAKANG Sekarang kita akan mempelajari bagaimana menambah simpul baru ke dalam senerai berantai. Kita anggap bahwa simpul baru yang akan ditambah selalu menempati posisi setelah posisi yang terakhir dari senerai berantai yang diketahui. Untuk menjelaskan operasi ini baiklah kita gunakan deklarasi pointer dan simpul seperti di bawah ini: struct node { char nama[20]; int umur; float tinggi; node *next; }; Menambahkan simpul diakhir list Misalkan simpul baru yang dibentuk diberi nama temp. Untuk menambahkan simpul baru perlu kita uji apakah Linked list masih kosong atau tidak. Linked list yang kosong ditandai dengan awal_ptr bernilai NULL. Jika tidak kosong maka dibaca senarai yang ada mulai dari posisi awal sampai terakhir misalkan dengan menggunakan pointer temp2. Simpul terakhir ditandai dengan medan penyambung dari temp2 bernilai NULL.Jika sudah berada pada simpul terakhir kita tunjukkan medan penyambung temp2 dengan temp. Program lengkap menambahkan simpul diakhit senarai sebagai berikut: node *temp, *temp2; // pointer sementara // Isi data temp = new node; //menciptakan node baru cout << "Nama : ";cin >> temp->nama; cout << "Umur : ";cin >> temp->umur; cout << "Tinggi : ";cin >> temp->tinggi; temp->next = NULL; // Inisialisasi pointer ketika masih kosong if (awal_ptr == NULL) {
  • 3. awal_ptr = temp; posisi = awal_ptr; } else { temp2 = awal_ptr; // list tidak kosong while (temp2->next != NULL) { temp2 = temp2->next; // pindah ke link berikutnya } temp2->next = temp; } Menghapus simpul diakhir list kita gunakan car a sebagai berikut : Untuk menghapus simpul diakhir perlu kita uji apakah senarai masih kosong atau tidak, jika kosong tampilkan pesan bahwa list masih kosong. Jika tidak kosong perlu diuji apakah jumlah simpul dalam senarai hanya satu yang ditandai dengan medan penyambung yang bernilai null. Jika simpul lebih dari saru maka dibaca semua simpul sampai simpul terakhir yaitu medan penyambung bernilai null. node *temp1, *temp2; if (awal_ptr == NULL) cout << "List kosong!" << endl; else { temp1 = awal_ptr; if (temp1->next == NULL) { delete temp1; awal_ptr = NULL; } else { while (temp1->next != NULL) { temp2 = temp1; temp1 = temp1->next; } delete temp1; temp2->next = NULL; } } Menghapus simpul diawallist
  • 4. Menghapus simpul diawal dilakukan dengan cara menampung simpul awal pada pointer temp, kemudian mengarahkan awal_ptr ke simpul selanjutnya. Kemudian simpul yang ditampung dalam pointer temp dihapus. node *temp; temp = awal_ptr; awal_ptr = awal_ptr->next; delete temp; Menampilkan list Sebelum menampilkan linked list perlu kita uji apakah senarai kosong atau tidak. Jika senarai kosong kita tampilkan pesan bahwa List kosong. Jika senarai tidak kosong maka kita baca senarai mulai posisi awal sampai simpul terakhir. node *temp; temp = awal_ptr; cout << endl; if (temp == NULL) cout << "List kosong!" << endl; else { while (temp != NULL) { // Menampilkan isi cout << "Nama : " << temp->nama << " "; cout << "Umur : " << temp->umur << " "; cout << "Tinggi : " << temp->tinggi; if (temp == posisi) cout << " <– Posisi node"; cout << endl; temp = temp->next; } cout << "Akhir list!" << endl; } #include <iostream.h> struct node { char nama[20]; int umur; float tinggi; node *next; }; node *awal_ptr=NULL; node *posisi; int pilih; void tambah_simpul_akhir() { node *temp, *temp2; //simpul sementara //isi data temp=new node;
  • 5. cout<<"Nama : ";cin>>temp->nama; cout<<"Umur : ";cin>>temp->umur; cout<<"Tinggi : ";cin>>temp->tinggi; temp->next=NULL; //inisialisasi pointer ketika kosong if(awal_ptr==NULL) { awal_ptr=temp; posisi=awal_ptr; } else { temp2=awal_ptr; while(temp2->next != NULL) { temp2 = temp2->next; } temp2->next=temp; } } void tampil_senarai() { node *temp; temp = awal_ptr; if(temp == NULL) cout<<"List kosong"<<endl; else { cout<<endl<<endl; while(temp != NULL) { cout<<"Nama : "<<temp->nama<<" "; cout<<"Umur : "<<temp->umur<<" "; cout<<"Tinggi : "<<temp->tinggi; if (temp == posisi) cout<<" << posisi simpul"; cout<<endl; temp=temp->next; } cout<<"Akhir list"<<endl; } } void hapus_simpul_akhir() { node *temp1, *temp2; if (awal_ptr == NULL) cout << "List kosong!" << endl; else { temp1 = awal_ptr; if (temp1->next == NULL) { delete temp1; awal_ptr = NULL; } else { while (temp1->next != NULL) { temp2 = temp1; temp1 = temp1->next;
  • 6. } delete temp1; temp2->next = NULL; } } } void hapus_simpul_awal() { node *temp; temp = awal_ptr; awal_ptr = awal_ptr->next; delete temp; } void main() { awal_ptr=NULL; do { tampil_senarai(); cout<<"Menu Pilihan"<<endl; cout<<"0. Keluar program"<<endl; cout<<"1. Tambah simpul akhir"<<endl; cout<<"2. Hapus simpul akhir"<<endl; cout<<"3. Hapus simpul awal"<<endl; cout<<"Pilihan >> ";cin>>pilih; switch(pilih) { case 1: tambah_simpul_akhir();break; case 2: hapus_simpul_akhir();break; case 3: hapus_simpul_awal();break; } }while(pilih !=0); #include <iostream.h> struct node { char nama[20]; int umur; float tinggi; node *next; }; node *awal_ptr=NULL; node *posisi; int pilih; void tambah_simpul_akhir() { node *temp, *temp2; //simpul sementara //isi data temp=new node; cout<<"Nama : ";cin>>temp->nama; cout<<"Umur : ";cin>>temp->umur; cout<<"Tinggi : ";cin>>temp->tinggi; temp->next=NULL; //inisialisasi pointer ketika kosong if(awal_ptr==NULL) { awal_ptr=temp; posisi=awal_ptr;
  • 7. } else { temp2=awal_ptr; while(temp2->next != NULL) { temp2 = temp2->next; } temp2->next=temp; } } void tampil_senarai() { node *temp; temp = awal_ptr; if(temp == NULL) cout<<"List kosong"<<endl; else { cout<<endl<<endl; while(temp != NULL) { cout<<"Nama : "<<temp->nama<<" "; cout<<"Umur : "<<temp->umur<<" "; cout<<"Tinggi : "<<temp->tinggi; if (temp == posisi) cout<<" << posisi simpul"; cout<<endl; temp=temp->next; } cout<<"Akhir list"<<endl; } } void hapus_simpul_akhir() { node *temp1, *temp2; if (awal_ptr == NULL) cout << "List kosong!" << endl; else { temp1 = awal_ptr; if (temp1->next == NULL) { delete temp1; awal_ptr = NULL; } else { while (temp1->next != NULL) { temp2 = temp1; temp1 = temp1->next; } delete temp1; temp2->next = NULL; } } } void hapus_simpul_awal() { node *temp;
  • 8. temp = awal_ptr; awal_ptr = awal_ptr->next; delete temp; } void main() { awal_ptr=NULL; do { tampil_senarai(); cout<<"Menu Pilihan"<<endl; cout<<"0. Keluar program"<<endl; cout<<"1. Tambah simpul akhir"<<endl; cout<<"2. Hapus simpul akhir"<<endl; cout<<"3. Hapus simpul awal"<<endl; cout<<"Pilihan >> ";cin>>pilih; switch(pilih) { case 1: tambah_simpul_akhir();break; case 2: hapus_simpul_akhir();break; case 3: hapus_simpul_awal();break; } }while(pilih !=0); } }