Single Linked List C++ Disertai Contoh, Tugas & Jawaban - TeachMeSoft

Single Linked List C++ Disertai Contoh, Tugas & Jawaban

Single Linked List C++ Disertai Contoh, Tugas & Jawaban



Materi

Linked list adalah suatu cara untuk menyimpan suatu data dengan struktur sehingga program dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan suatu data kapan saja diperlukan. Secara rinci program dapat menuliskan struct atau definisi kelas yang berisi variabel yang memegang informasi yang ada didalamnya, dan mempunyai suatu pointer yang menunjukan ke suatu stuct sesuai dengan tipe datanya.

Single : artinya field pointernya hanya satu buah saja dan satu arahnya hanya satu buah saja dan satu arah serta pada akhir node, pointernya menunjuk NULL serta pada akhir node, pointer NULL
Linked list artinya node linked list artinya node node tersebut saling terhubung satu sama node tersebut saling terhubung satu sama lain.


Setiap node-node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data. Node terakhir akan menujuk ke NULL akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list.


Struktur dinamis ini mempunyai banyak keuntungan dibanding struktur array yang bersifat statis. Struktur ini lebih dinamis, karena banyak elemen dengan mudah ditambhah atau dikurangi, berbeda dengan array yang ukurannya bersifat tetap. Disamping itu manipulasi terhadap setiap elemen seperti menyisipkan, menghapus, menambah dapat dilakukan dengan mudah.

Definisi link list dapat dituliskan secara sederhanan dengan struktur berikut
Struct Tnode {
             Int data;
             Struct Tnode *next;
}

Pembuatan struct bernama Tnode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari Tnode. Setelah pembuatan struct, buat variabel head yang bertipe pointer dari Tnode yang berugna sebagai kepala linked list.

Operasi yang dapat dilakukan pada sebuah link list adalah penambahan dan penghapusan elemen link list. Penambahan dan penghapusan dapat dilakukan pada posisi depan, posisi belakang atau posisi tertentu pada link list. Berikut ilustrasi penambahan data di belakang link list
Ilustrasi penambahan data dibelakang link list
Ilustrasi penambahan data dibelakang link list



Contoh Program

Buatlah program dibawah ini. Ilustrasikan gambarkan Linked list-nya. Tuliskan juga algoritmanya.
Source code
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <stdlib.h>

using namespace std;

struct TNode{
int data;
TNode *next;
};

TNode *head, *tail;

void init (){
head = NULL;
tail = NULL;
}

int isEmpty(){
if(tail==NULL)return 1;
else return 0;
}

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;
}
cout<<"Data masuk\n";
}

void tampil(){
TNode *bantu;
bantu=head;
if(isEmpty()==0)
{
while(bantu!=NULL)
{
cout<<bantu->data<<" ";
bantu=bantu->next;
}
}else cout <<"Masih kosong\n";
}

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;
}
cout<<d<<"terhapus";
}else cout<<"Masih kosong\n";
}

void clear()
{
TNode *bantu, *hapus;
bantu =head;
while(bantu!=NULL)
{
hapus=bantu;
bantu=bantu->next;
delete hapus;
}
head = NULL;
printf("clear");
}

main()
{
int pil, databaru;
do
{
system("cls");
cout<<endl;
cout<<" ============================"<<endl;
cout<<" = PROGRAM LINKED LIST ="<<endl;
cout<<" ============================"<<endl;
cout<<" = 1. Insert Depan ="<<endl;
cout<<" = 2. Delete Depan ="<<endl;
cout<<" = 3. Tampil Data ="<<endl;
cout<<" = 4. Clear ="<<endl;
cout<<" = 5. Exit ="<<endl;
cout<<" ============================"<<endl;
cout<<" Masukan Pilihan : ";cin>>pil;
switch (pil)
{
case 1: system("cls");{
cout<<"Masukan Data = ";cin>>databaru;
insertDepan(databaru);
break;
}
case 2: system("cls");{
hapusDepan();
break;
}
case 3: system("cls");{
tampil();
break;
}
case 4: system("cls");{
clear();
break;
}
case 5: system("cls");{
return 0;
break;
}
default : system("cls");
{
cout<<"\n Maaf, Pilihan yang anda pilih tidak tersedia!";
}
}
getch();
}
while (pil!=7);
}
Running program
Running program


Tugas

  1. Rancangalah algoritma untuk menambahkan men "Tambah dibelakang dalam sebuah void)
  2. rancanglah algoritma untuk menambahkan menu "Hapus dibelakang" dalam sebuah void


Jawaban


Pending



Disqus comments