Anda di halaman 1dari 5

NAMA Anggota : 1.

Muhamamad Taufiq Hidayatullah (094)

2. Ahmad Syaihu Firmansyah (096)

3. Rizka Ayuningtyas (097)

TUGAS : DOUBLY LINKED LIST CIRCULAR TANPA TAIL ( Hapus Belakang )

Program dan penjelasan :

#include <iostream>

using namespace std;

struct node

int data;

node* next;

node* prev;

};

//variabel node

node* head;

node* tampil;

node* del;

node* baru;

//fungsi inisialisasi, fungsi ini menggunakan menggunakan tipe data bool karena memiliki dua kondisi 1
dan 0

bool isEmpty()

if(head == NULL)

return 1; // jika head kosong atau null maka return 1

else

return 0; // jika head tidak sama dengan null atau kosong maka return 0

}
//fungsi input digunakan untuk memasukan data berupa bilangan

void input(int dta)

baru = new node; //membuat new node yang memiliki alamat ke variable pointer baru agar dapat
terhubung dengan struct

baru->data = dta; //selanjutnya node yang ditunjuk variable pointer baru di inputkan data

baru->next = NULL; //next dari node yang ditunjuk variable pointer baru masih kosong

baru->prev = NULL; //prev dari node yang ditunjuk variable pointer baru masih kosong

if(isEmpty()==1) //jika head kosong

head = baru; //maka head memiliki alamat dari pointer baru

Else //jika head terisi

baru->next = head; //maka next dari head menunjuk ke alamat pointer baru

head->prev = baru; //maka prev dari baru menunjuk ke head

head = baru;

//fungsi hapus untuk menghapus data dari belakang tanpai tail

void hapus()

int simpan; // variable simpan

if(head!=NULL) // jika next dari head tidak sama dengan null

if(head->next != NULL) // jika setelah next dari head tidak sama dengan null

del=head; // maka head sama dengan variable pointer del


simpan = head->data; //data yang memiliki alamat pointer variable head menjadi variable simpan

cout<<"\n"<<simpan<<" telah dihapus"<<endl; //variable simpan terhapus

head = head->next; //next dari head menjadi head

head->prev = NULL; //prev dari head menjadi null atau kosong

delete del;

Else // jika next dari head sama dengan null

simpan = head->data; //maka data yang memiliki alamat pointer head menjadi variable
simpan

cout<<"\n"<<simpan<<" telah dihapus"<<endl; //variabel simpan terhapus

head = NULL;

else

cout<<"\nLinked List kosong penghapusan tidak dapat dilakukan"<<endl;

//fungsi cetak untuk menampilkan data

void cetak()

tampil = head; //variabel pointer head diubah menjadi variabel pointer tampil

if(head!=NULL)//jika head tidak sama dengan null

while(tampil!=NULL) //perulangan jika tampil tidak sama dengan null

tampil = tampil->next; //next dari tampil sama dengan tampil


cout<<"\t"<<tampil->data; //menampilkan data dari variable pointer tampil

else

cout<<"\nTidak ada data dalam linked list"<<endl;

void menu()

char pilih, ulang;

int data;

do

system("CLS");

cout<<"DOUBLE LINKED LIST CIRCULAR TANPA TAIL"<<endl;

cout<<"-------------------------------"<<endl;

cout<<"Menu: ";

cout<<"\n1. Input Data";

cout<<"\n2. Hapus belakang (tanpa tail) ";

cout<<"\n3. Cetak Data";

cout<<"\nMasukkan pilihan Anda : ";

cin>>pilih;

switch(pilih)

case '1' :

cout<<"\nMasukkan Data : ";

cin>>data;
input(data);

cout<<"\n"<<data<<" telah ditambahkan"<<endl;

break;

case '2' :

hapus();

break;

case '3' :

cetak();

break;

default :

cout<<"Pilihan Tidak Tersedia"<<endl;

cout<<"\nKembali ke menu? (y/n)";

cin>>ulang;

}while(ulang=='y' || ulang =='Y');

int main()

isEmpty(); //memanggil fungsi isEmpty

menu(); // memanggil fungsi menu untuk menampilkan pilihan

Anda mungkin juga menyukai