You are on page 1of 18

LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS

Tuesday, August 2, 2022

Praktikum : Praktikum 1
Nama : Kevin Zulkarnain
NRP : 5221600014

Soal 1 :

Soalan :
1. Implementasikan operasi dasar Double linked list : Menyisipkan sebagai simpul
ujung(awal) dari linked list.

Program dan Output Program:


(Berikan langkah – langkah solusi pemecahan masalah disini.)

#include <iostream>
#include <stdio.h>
#include <iomanip>
using namespace std;
typedef struct node{
long data;
node* next;
node* prev;
};
node* head;
node* tail;
node* print;
node* entry;
void inisialisasi(){
head = NULL;
tail = NULL;
}
int isEmpty(){
if(head == NULL)
return 1;
else
return 0;
}
void input(int *dta){
entry = new node;

entry->data = *dta;
entry->next = NULL;
entry->prev = NULL;

if(isEmpty()==1){
head = entry;
head->next = NULL;
head->prev = NULL;
tail=head;
}else

1
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

{
tail->next = entry;
entry->prev = tail;
tail = entry;
}
} void cetak()
{
print = head;
if(head!=NULL)
{
while(print!=NULL)
{
cout<<"\n\t"<<print->data;
print = print->next;
}
}
else
printf("\nTidak ada data dalam linked list");
} void menu()
{
char pilih, lagi;
int data;
do
{
menu :
cout<<"DOUBLE LINKED LIST \n Menyisipkan Ujung Simpul\n "<<endl;
cout<<"Menu: ";
cout<<"\n1. Masukkan Data";
cout<<"\n2. Cetak Data";
cout<<"\n3. Keluar";
cout<<"\nMasukkan pilihan : ";
cin>>pilih;
switch(pilih)
{
case '1' :
cout<<"\nMasukkan Data : ";
cin>>data;
input(&data);
cout<<"\n"<<data<<" telah ditambahkan"<<endl;
break;
case '2' :
cetak();
break;
case '3' :
exit(0);
break;
default :
cout<<"\nPilih ulang"<<endl;
goto menu;
}

2
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

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


cin>>lagi;
}while(lagi=='y' || lagi =='Y');
}
int main()
{
inisialisasi();
menu();
return 0;
}

Soal 2

3
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

Soalan :

2. Implementasikan operasi dasar Double linked list : Membaca atau menampilkan

Program dan Output Program:


(Berikan langkah – langkah solusi pemecahan masalah disini.)

#include <iostream>
#include <stdio.h>
#include <iomanip>
using namespace std;
typedef struct node{
long data;
node* next;
node* prev;
};
node* head;
node* tail;
node* print;
node* entry;
void inisialisasi(){
head = NULL;
tail = NULL;
}
int isEmpty(){
if(head == NULL)
return 1;
else
return 0;
}
void input(int *dta){
entry = new node;

entry->data = *dta;
entry->next = NULL;
entry->prev = NULL;

if(isEmpty()==1){
head = entry;
head->next = NULL;
head->prev = NULL;
tail=head;
}else
{
tail->next = entry;
entry->prev = tail;
tail = entry;
}
} void cetak()
{

4
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

print = head;
if(head!=NULL)
{
while(print!=NULL)
{
cout<<"\n\t"<<print->data;
print = print->next;
}
}
else
printf("\nTidak ada data dalam linked list");
} void menu()
{
char pilih, lagi;
int data;
do
{
menu :
cout<<"DOUBLE LINKED LIST \n Menyisipkan Ujung Simpul\n "<<endl;
cout<<"Menu: ";
cout<<"\n1. Masukkan Data";
cout<<"\n2. Cetak Data";
cout<<"\n3. Keluar";
cout<<"\nMasukkan pilihan : ";
cin>>pilih;
switch(pilih)
{
case '1' :
cout<<"\nMasukkan Data : ";
cin>>data;
input(&data);
cout<<"\n"<<data<<" telah ditambahkan"<<endl;
break;
case '2' :
cetak();
break;
case '3' :
exit(0);
break;
default :
cout<<"\nPilih ulang"<<endl;
goto menu;
}
cout<<"\nKembali ke menu? (y/n)";
cin>>lagi;
}while(lagi=='y' || lagi =='Y');
}
int main()
{
inisialisasi();

5
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

menu();
return 0;
}

6
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

Soal 3

Soalan :

3. Implementasikan operasi dasar Double linked list : Mencari sebuah simpul


tertentu. Tambahkan kondisi jika yang dicari adalah data yang paling depan.

Program dan Output Program:


(Berikan langkah – langkah solusi pemecahan masalah disini.)

#include <iostream>
#include <stdio.h>
#include <iomanip>
using namespace std;
typedef struct node {
long data;
node* next;
node* prev;
};
node* head;
node* tail;
node* print;
node* entry;
node* search;
void inisialisasi() {
head = NULL;
tail = NULL; }
int isEmpty() {
if(head == NULL)
return 1;
else
return 0; }
void input(int *dta) {
entry = new node;
entry
->data = *dta;
entry
->next = NULL;
entry
->prev = NULL;
if(isEmpty()==1) {
head = entry;
head
->next = NULL;
head
->prev = NULL;
tail=head; }
else {
tail
->next = entry;

7
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

entry
->prev = tail;
tail = entry; }}
void cari() {
int pos,go=1,pil;
printf("Bilangan yang ingin dicari ? ");
scanf("%d",&pos);
search=head;
while(search!=NULL)
{
if(search->data!=pos)
{
search=search->next;
go++;
}
else
{
pil=1;
break;
}
}
if(pil==1){
printf("\nBilangan %d ditemukan diposisi ke-%d",pos,go);
printf("\n");
}else{
printf("\nBilangan tidak ditemukan");
printf("n");
}
}
void cetak(){
print = head;
if(head!=NULL){
while(print!=NULL){
cout<<"\n\t"<<print->data;
print = print->next;
}
}else

printf("\nTidak ada data dalam linked list");


}

void menu(){
char pilih, lagi;
int data;
do{
menu :
cout<<"DOUBLE LINKED LIST \n Menyisipkan Ujung Simpul\n "<<endl;
cout<<"Menu: ";
cout<<"\n1. Masukkan Data";
cout<<"\n2. Menampilkan Data";

8
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

cout<<"\n3. Mencari Data";


cout<<"\n4. Keluar";
cout<<"\nMasukkan pilihan : ";
cin>>pilih;
switch(pilih)
{
case '1' :
cout<<"\nMasukkan Data : ";
cin>>data;
input(&data);
cout<<"\n"<<data<<" telah ditambahkan"<<endl;
break;
case '2' :
cetak();
break;
case '3':
cari();
break;
case '4' :
exit(0);
break;
default :
cout<<"\nPilih ulang"<<endl;
goto menu;
}
cout<<"\nKembali ke menu? (y/n)";
cin>>lagi;
}while(lagi=='y' || lagi =='Y');
}
int main()
{
inisialisasi();
menu();
return 0;
}

9
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

10
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

Soal 4

Soalan :

4. Implementasikan operasi dasar Double linked list : Menghapus simpul tertentu.


Tambahkan kondisi jika yang dihapus adalah data yang paling depan atau data
yang paling terakhir.

Program dan Output Program:


(Berikan langkah – langkah solusi pemecahan masalah disini.)

#include <iostream>
#include <stdio.h>
#include <iomanip>
using namespace std;

typedef struct node{


long data;
node* next;
node* prev;
};
node* head;
node* tail;
node* print;
node* entry;
node* search;
node* hapus;
void inisialisasi()
{
head = NULL;
tail = NULL;
}
int isEmpty()
{
if(head == NULL)
return 1;
else
return 0;
}
void input(int *dta)
{
entry = new node;
entry->data = *dta;
entry->next = NULL;
entry->prev = NULL;
if(isEmpty()==1)
{
head = entry;
head->next = NULL;
head->prev = NULL;

11
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

tail=head;
}
else
{
tail->next = entry;
entry->prev = tail;
tail = entry;
}
}
void cari() {
int pos,go=1,pil;
printf("Bilangan yang ingin dicari ? ");
scanf("%d",&pos);
search=head;
while(search!=NULL) {
if(search
->data!=pos)
{
search=search
->next;
go++; }
else {
pil=1;
break; }}
if(pil==1) {
printf(" \nBilangan %d ditemukan diposisi ke-%d",pos,go);
printf("\n");
} else {
printf("\nBilangan tidak ditemukan");
printf("n");
}

void hps() {
int simpan;
if (head != NULL) {
if (head->next != NULL){
hapus = head;
simpan = head->data;
cout << "\n"<< simpan << " telah dihapus" << endl;
head = head->next;
head
->prev = NULL;
delete hapus;
cout << "anda menghapus data awal" <<endl;
}else {
simpan = head->data;
cout << "\n" << simpan << " telah dihapus" <<endl;
head = NULL;

12
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

cout << "anda menghapus data akhir" <<endl; }


}
else cout << "\n1 DATA TELAH DIHAPUS" << endl;
cout << "\nANDA MENGHAPUS DATA AKHIR" << endl;
cout << "\n============================" << endl;
}
void cetak() {
print = head;
if(head!=NULL) {
while(print!=NULL) {
cout<<"\n\t"<<print->data;
print = print->next;
}
}else printf("\nTidak ada data dalam linked list");
} void menu() {
char pilih, lagi;
int data;
do{
menu :
cout<<"DOUBLE LINKED LIST\n "<<endl;
cout<<"Menu: ";
cout<<"\n1. Menambahkan Data";
cout<<"\n2. Menampilkan Data";
cout<<"\n3. Mencari Data";
cout<<"\n4. Menghapus Data";
cout<<"\n5. Keluar";
cout<<"\nMasukkan pilihan : ";
cin>>pilih;
switch(pilih) {
case '1' :
cout<<"\nMasukkan Data : ";
cin>>data;
input(&data);
cout<<"\n"<<data<<" telah ditambahkan"<<endl;
break;
case '2' :
cetak();
break;
case '3':
cari();
break;
case '4':
hps();
break;
case '5' :
exit(0);
break;
default :
cout<<"\nPilih ulang"<<endl;
goto menu;

13
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

}
cout<<"\nKembali ke menu? (y/n)";
cin>>lagi;
}while(lagi=='y' || lagi =='Y');
}
int main()
{
inisialisasi();
menu();
return 0;
}

14
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

Soal 5

Soalan :

5. Gabungkan semua operasi di atas dalam sebuah Menu Pilihan.

Program dan Output Program:


(Berikan langkah – langkah solusi pemecahan masalah disini.)

#include <iostream>
#include <stdio.h>
#include <iomanip>
using namespace std;

typedef struct node{


long data;
node* next;
node* prev;
};
node* head;
node* tail;
node* print;
node* entry;
node* search;
node* hapus;
void inisialisasi()
{
head = NULL;
tail = NULL;
}
int isEmpty()
{
if(head == NULL)
return 1;
else
return 0;
}
void input(int *dta)
{
entry = new node;
entry->data = *dta;
entry->next = NULL;
entry->prev = NULL;
if(isEmpty()==1)
{
head = entry;
head->next = NULL;
head->prev = NULL;
tail=head;
}

15
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

else
{
tail->next = entry;
entry->prev = tail;
tail = entry;
}
}
void cari() {
int pos,go=1,pil;
printf("Bilangan yang ingin dicari ? ");
scanf("%d",&pos);
search=head;
while(search!=NULL) {
if(search
->data!=pos)
{
search=search
->next;
go++; }
else {
pil=1;
break; }}
if(pil==1) {
printf(" \nBilangan %d ditemukan diposisi ke-%d",pos,go);
printf("\n");
} else {
printf("\nBilangan tidak ditemukan");
printf("n");
}

void hps() {
int simpan;
if (head != NULL) {
if (head->next != NULL){
hapus = head;
simpan = head->data;
cout << "\n"<< simpan << " telah dihapus" << endl;
head = head->next;
head
->prev = NULL;
delete hapus;
cout << "anda menghapus data awal" <<endl;
}else {
simpan = head->data;
cout << "\n" << simpan << " telah dihapus" <<endl;
head = NULL;
cout << "anda menghapus data akhir" <<endl; }
}

16
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

else cout << "\n1 DATA TELAH DIHAPUS" << endl;


cout << "\nANDA MENGHAPUS DATA AKHIR" << endl;
cout << "\n============================" << endl;
}
void cetak() {
print = head;
if(head!=NULL) {
while(print!=NULL) {
cout<<"\n\t"<<print->data;
print = print->next;
}
}else printf("\nTidak ada data dalam linked list");
} void menu() {
char pilih, lagi;
int data;
do{
menu :
cout<<"DOUBLE LINKED LIST\n "<<endl;
cout<<"Menu: ";
cout<<"\n1. Menambahkan Data";
cout<<"\n2. Menampilkan Data";
cout<<"\n3. Mencari Data";
cout<<"\n4. Menghapus Data";
cout<<"\n5. Keluar";
cout<<"\nMasukkan pilihan : ";
cin>>pilih;
switch(pilih) {
case '1' :
cout<<"\nMasukkan Data : ";
cin>>data;
input(&data);
cout<<"\n"<<data<<" telah ditambahkan"<<endl;
break;
case '2' :
cetak();
break;
case '3':
cari();
break;
case '4':
hps();
break;
case '5' :
exit(0);
break;
default :
cout<<"\nPilih ulang"<<endl;
goto menu;
}
cout<<"\nKembali ke menu? (y/n)";

17
LOGBOOK PRAKTIKUM PEMROGRAMAN 1 – Teknologi Game PENS
Tuesday, August 2, 2022

cin>>lagi;
}while(lagi=='y' || lagi =='Y');
}
int main()
{
inisialisasi();
menu();
return 0;
}

18

You might also like