1 min read

Soal Tentang Single Linked List

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

Jawab:

  1. Ilustrasi / Penggambaran Single Linked List dengan Head

Listing Program:

#include <iostream.h>

#include <conio.h>

struct TNode{

char data[15];

TNode *next;

};

TNode *head;

int opsi = 0;

void init(){

head = NULL;

}

bool isEmpty(){

if (head ==NULL) return true;

else return false;

}

void tambahdepan(){

TNode *baru;

baru = new TNode;

cout << “Masukkan DATA : “;

cin >> baru-> data;

baru->next = NULL;

clrscr();

if(isEmpty()==true){

head=baru;

head->next = NULL;

}else {

baru->next = head;

head = baru;

}

}

void tambahbelakang(){

TNode *baru,*bantu;

baru = new TNode;

cout << “Masukkan DATA  : “;

cin >> baru-> data;

baru->next = NULL;

clrscr();

if(isEmpty()== true){

head=baru;

head->next = NULL;

} else {

bantu=head;

while(bantu->next!=NULL){

bantu=bantu->next;

}

bantu->next = baru;

}

}

void tambahtengah(){

TNode *baru, *bantu;

int posisiSisip;

if(isEmpty()== false){

cout<<“Akan disisip setelah Data Ke ? : “; cin>>posisiSisip;

bantu=head;

baru=new TNode;

for(int i=1;i<posisiSisip;i++){

if(bantu->next!=NULL)

bantu=bantu->next;

else break;

}

cout << “Masukkan DATA  : “;

cin >> baru-> data;

baru->next=bantu->next;

bantu->next=baru;

clrscr();

}

else cout<<“Mau Menyisipkan tengah Belum ada data !! …silahkan masukkan Data terlebih dahulu”;

}

void hapusdepan() {

TNode *hapus;

if (isEmpty() == false){

if(head->next !=NULL){

hapus = head;

head = head->next;

delete hapus;

clrscr();

} else {

head = NULL;

}

}else {

cout<<“Data anda masih kosong !!!!\n”;

}

}

void hapusbelakang(){

TNode *hapus, *bantu;

if (isEmpty()==false){

if(head->next !=NULL){

bantu = head;

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

bantu = bantu->next;

}

hapus = bantu->next;

bantu->next = NULL;

delete hapus;

clrscr();

} else {

head = NULL;

}

} else {

cout<<“Data anda masih kosong !!!!\n”;

}

}

void hapustengah(){

int banyakdata,posisiSisip,poshapus;

TNode *hapus, *bantu;

if(isEmpty()== false){

cout<<” Akan dihapus pada data ke : “; cin>>posisiSisip;

banyakdata=1;

bantu=head;

while(bantu->next!=NULL)

{

bantu=bantu->next;

banyakdata++;

}

if((posisiSisip<1)||(posisiSisip>banyakdata)){

cout<<“Belum ada data !! …silahkan masukkan Data terlebih dahulu..\n”;

}else {

bantu=head;

poshapus=1;

while(poshapus<(posisiSisip-1))

{

bantu=bantu->next;

poshapus++;

}

hapus=bantu->next;

bantu->next=hapus->next;

delete hapus;

clrscr();

}

}

else cout<<“Data Masih kosong, tidak bisa hapus data dari tengah! “;

}

void display(){

clrscr();

TNode *bantu;

bantu = head;

if(isEmpty()==true){

cout<<“Data masih kosong\n”;

} else {

cout<<endl<<“DATA LINKED LIST\n”;

while(bantu!=NULL){

cout<<“————— “<<endl;

cout<<“DATA    : ” << bantu->data << ” “;

cout<<endl;

bantu=bantu->next;

cout<<“————— “<<endl;

}

cout<<endl;

}

}

void main(){

int();

do{

cout<<endl;

cout<<endl;

cout<<endl;

cout<<“———–MENU PILIHAN————–”   <<endl;

cout<<endl;

cout<<“1. Tambah Simpul dari Depan.”   <<endl;

cout<<“2. Tambah Simpul dari Belakang.”   <<endl;

cout<<“3. Tambah Simpul dari Tengah.”   <<endl;

cout<<“4. Hapus Simpul dari Depan.”   <<endl;

cout<<“5. Hapus Simpul dari Belakang.”   <<endl;

cout<<“6. Hapus Simpul dari Tengah.”   <<endl;

cout<<“7. Tampil Data.”   <<endl;

cout<<“8. Keluar.”   <<endl;

cout<<endl;

cout<< “Pilihan Menu : “;

cin >> opsi;

switch(opsi){

case 1 : tambahdepan();break;

case 2 : tambahbelakang();break;

case 3 : tambahtengah();break;

case 4 : hapusdepan();break;

case 5 : hapusbelakang();break;

case 6 : hapustengah();break;

case 7 : display();break;

}

}while (opsi != 8);

}

Hasilnya :

Lalu kita coba :

Tandanya berhasil:

2. Ilustrasi / Penggambaran Single Linked List dengan Head & Tail

Listing Program:

#include <iostream.h>

#include <conio.h>

#include <stdio.h>

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;

}

printf(“Data masuk\n”);

}

void tambahTengah(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”);

}

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”);

}

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”);

}

void hapusTengah(){

TNode *bantu,*hapus;

int d;

if (isEmpty()==0){

if(head!=tail){

hapus = bantu;

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”);

}

void 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”;

}

void clear()

{

TNode *bantu,*hapus;

bantu = head;

while(bantu!=NULL)

{

hapus = bantu;

bantu = bantu->next;

delete hapus;

}

head = NULL;

tail = NULL;

}

void tampil(){

TNode *bantu;

bantu=head;

if(isEmpty()==0){

while(bantu!=NULL){

cout<<bantu->data<<endl;

bantu=bantu->next;

}

}

else

cout<<“Masih Kosong”<<endl;

}

main(){  // Fungsi Utama dari program

int pil;

do{

clrscr();

int n;

cout<<“=================================”<<endl;

cout<<“\t Menu Pilihan\t\t”<<endl;

cout<<“=================================”<<endl;

cout<<endl;

cout<<“1.Insert Depan”<<endl;

cout<<“2.Insert Tengah”<<endl;

cout<<“3.Insert Belakang”<<endl;

cout<<“4.Display”<<endl;

cout<<“5.Delete Depan”<<endl;

cout<<“6.Delete Tengah”<<endl;

cout<<“7.Delete Belakang”<<endl;

cout<<“8.Hapus Semua”<<endl;

cout<<“9.Exit”<<endl;

cout<<endl;

cout<<“Masukan Pilihan Anda :”;pil=getche();

switch(pil){

case ‘1’ : clrscr();

cout<<“Masukan data :”;cin>>n;

isEmpty();

insertDepan(n);

break;

case ‘2’: clrscr();

cout<<“Masukan data :”;cin>>n;

isEmpty();

tambahBelakang(n);

break;

case ‘3’: clrscr();

cout<<“Masukan data :”;cin>>n;

isEmpty();

tambahBelakang(n);

break;

case ‘4’: clrscr();

isEmpty();

tampil();

break;

case ‘5’: clrscr();

isEmpty();

hapusDepan();

break;

case ‘6’: clrscr();

isEmpty();

hapusTengah();

break;

case ‘7’: clrscr();

isEmpty();

hapusBelakang();

break;

case ‘8’:clrscr();

clear();

}

getch();

}while(pil!=’9′);

return 0;

}

Hasil:

Masukan pilihan anda: 1 (Insert Depan)

Masukan data: 20 atau terserah angka berapa

Tekan Enter

Data Masuk:

Tekan Enter lagi,

Masukan pilihan anda: 2 (Insert Tengah)

Masukan data: 30 atau terserah angka berapa

Tekan Enter

Data Masuk

Tekan Enter lagi,

Masukan pilihan anda: 3 (Insert Belakang)

Masukan data: 12 atau terserah angka berapa

Tekan Enter

Data Masuk

Tekan Enter lagi,

Masukan Pilihan Anda: 4 (Display/Tampilan)

Jika sudah selesai melihat Tekan Enter,

Jika Ingin Menghapus, bisa pilih Delete Depan, Delete Tengah, dan Delete Belakang

Contoh:

Masukan Pilihan Anda: 5 (Delete Depan)

Maka 20 akan Terhapus,

Jika sudah tekan enter

Atau bisa pilih Hapus Semua contoh

Masukan Pilihan Anda: 8 (Hapus Semua)

Maka Tampilannya akan seperti ini artinya data sudah terhapus,

Jika kita cek display, tampilannya akan “Masih Kosong” karena sudah terhapus.

Tandanya program sudah berhasil 👍

Berikut adalah Source Codenya klik Program Single Linked List dengan Head & Tail menambah & menghapus node ini:

Program-Single-Linked-List-dengan-Head-Tail-menambah-menghapus-node

Leave a Reply

Your email address will not be published. Required fields are marked *