Anda di halaman 1dari 25

LAPORAN PRAKTIKUM RESMI

ALGORITMA & STRUKTUR DATA 1

Disusun oleh :
Nama : Edwin Susanto
NIM : 201301022

Dosen pengampu :
Yosef Murya Kusuma Ardhana.S.T., M.Kom

JURUSAN SISTEM INFORMASI


SEKOLAH TING GI ILMU KOMPUTER YOS SUDARSO
PURWOKERTO
2014
1

BAB I
TEORI DASAR

1. PENGERTIAN LINKED LIST


Linked List adalah struktur data yang paling sederhana yaitu Linked List atau struktur
Berkait atau Senarai Berantai
Linked List di sebut dengan senarai satu arah karena masing-masing komponen di
namakan dengan simpul.

NULL

Linked List mengandung 3 buah simpul/node sebuah pointer. Simpul pada linked list
terdiri dari 2 komponen yaitu :

Data yang diisi beberapa atau satu elemen.


Pointer

2. PERBEDAAN ARRAY DENGAN LINKED LIST


Array dan Linked list hampir serupa tetapi berbeda , berikut perbedaannya

Array

Linked List

Statis

Dinamis

Penambahan/ penghapusan data terbatas.

Penambahan/ penghapusan data tidak terbatas.

Random Access

Sequential Access

Penghapusan array tidak mungkin

Penghapusan linked list mudah

3. DEKLARASI LINKED LIST


Struct FileList
{
char filename[64];
struct FileList *next;
}

4. BENTUK NODE LINKED LIST

Bentuk node single linked list NON-CIRCULAR

Single Field pointer-nya hanya satu dan satu arah , pada akhir node pointer-nya
menunjuk NULL. Setiap node pada Linked List mempunyai field yang berisi pointer
ke node berikutnya dan juga memiliki field yang berisi dua node terakhir dan
menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti pada saat
pembacaan isi Linked List.

Single linked list NON-CIRCULAR menggunakan HEAD

Dalam Single linked list NON-CIRCULAR menggunakan HEAD node menunjuk


sebuah head , maka dibutuhkan satu buah struktur penggunaan head yang akan selalu
menunjuk pada node pertama.
5. TEKNIK MENAMBAH NODE

Teknik menambah node di depan


Penambahan node baru akan di lakukan di node paling depan , namun pada saat
pertama kali data masih kosong , maka penambahan data dilakukan dengan cara
node menggantikan node baru tersebut.

Teknik menambah node di belakang


Penambahan data dilakukan dibelakang , namun pada saat pertama kali , node
langsung ditunjuk oleh head. Penambahan di belakang membutuhkan pointer

bantu untuk mengetahui node terakhir. Kemudian dikaitkan dengan node baru
untuk mengetahui data terakhir perlu digunakan perulangan.

Teknik Menghapus node di depan


Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh
pointer , maka harus menggunakan pointer lain yang digunakan untuk menunjuk
node yang akan dihapus , barulah kemudian menghapus pointer , hapus dengan
menggunakan perintah delete.

Teknik Menghapus node di belakang


Membutuhkan pointer baru dan hapus. Pointer hapus digunakan untuk menunjuk
node yang akan dihapus. Pointer bantuk untuk menunjuk node sebelum node yang
dihapus yang akan menjadi node terakhir. Pointer bantu diguanakan untuk
menunjuk ke nilai NULL.

BAB II
PENJELASAN PROGRAM

Pada bab Linked ini akan membahas tentang listing program linked list 01 , 02 dan 03

Listing program Linked list 01


/*
* Linked list.cpp
*
* Created on: Jun 3, 2014
*
Author: KOMPUTER12
*/
#include <iostream>
#include <malloc.h>
#include <list>
using namespace std;
int main()
{
int i;
struct ListEntry{
int number;
struct ListEntry *next;
}start, *node;
start.next=NULL;
node=&start;
for(i=1;i<=10;i++)
{
node->next=(struct ListEntry*)malloc(sizeof(struct ListEntry));
node=node->next;
node->number=i;
node->next=NULL;
}
node=start.next;
while(node)

{
cout<<node->number<<" ";
node=node->next;
}
return 0;
}
Hasil Output program

Penjelasan Listing program Linked list 01


1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah
komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau
teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include : Pengarah Praprocessor
Include adalah pengarah suatu library yang digunakan untuk suatu program.
3. Iostream : Library
Iostream adalah library untuk input dan output cin dan cout.
4. Tanda { dan } adalah tanda untuk mengawali dan mengakhiri program.
5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.
6. Cout : untuk menampilkan output program yang sudah dituliskan.
7. Cin : untuk menginputkan data yang dimasukkan oleh user.
8. Malloc.h : pengarah suatu library yang digunakan untuk mengalokasikan memori
9. <List> : pengarah untuk melakukan kegiatan linked list.
10. Statement For : Digunakan untuk perulangan pada program.
11. Tipe Data Abstrak Struct : Suatu tipe data abstrak yang terdiri dari suatu Class dan
Member.
12. Statement While : Digunakan untuk perulangan pada program.

Listing program Linked list 02


/*
* Linked list 2.cpp
*
* Created on: Jun 3, 2014
*

Author: KOMPUTER12

*/

#include <iostream>
#include <stdlib.h>
#include <malloc.h>
#include <conio.h>
#define nil NULL
#define info(P) P->info
#define next(P) P->next
#define first(L) (L)
typedef int infotype;
typedef struct telmtlist *alamat;
using namespace std;
typedef struct telmtlist
{
infotype info;
alamat next;
}elmtlist;
typedef alamat list;

void buatsenarai(list *L)


{
first(*L) = nil;
}
list nodbaru(int m)
{
list n;
n = (list) malloc(sizeof(elmtlist));
if (n!= NULL)
{
info(n) = m;
next(n) = nil;
}
return n;
}
void sisipsenarai (list *L, list t, list p)
{
if(p==nil)
{
t->next=*L;
*L=t;
}
else
{
t->next=p->next;
p->next=t;
}
}

void cetaksenarai(list L)
{
list ps;
for(ps=L;ps!=nil;ps=ps->next)
{
cout<<" "<<info(ps)<<" -->";

}
cout<<" NULL"<<endl;
}
int main()
{
list pel;
list n;
int i,k,nilai;
buatsenarai (&pel);
cout<<"Masukkan Banyak Data = ";
cin>>k;
for(i=1;i<=k;i++)
{
cout<<"Masukkan Data Senarai ke- "<<i<<" = ";
cin>>nilai;
n=nodbaru(nilai);
sisipsenarai (&pel,n,NULL);
}
cetaksenarai(pel);
return 0;
}

Hasil Output program linked list 02

Penjelasan listing program linked list 02


1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah
komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau
teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include : Pengarah Praprocessor
Include adalah pengarah suatu library yang digunakan untuk suatu program.
3. Iostream : Library
Iostream adalah library untuk input dan output cin dan cout.
4. Tanda { dan } adalah tanda untuk mengawali dan mengakhiri program.
5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.
6. Cout : untuk menampilkan output program yang sudah dituliskan.
7. Cin : untuk menginputkan data yang dimasukkan oleh user.
8. Malloc.h : pengarah suatu library yang digunakan untuk mengalokasikan memori
9. <List> : pengarah untuk melakukan kegiatan linked list.
10. Stdlib.h : pengarah suatu library yang digunakan untuk operasi artimatika dalam suatu
program.
11. Typedef : adalah suatu tipe data abstrak yang berfungsi untuk menggantikan nama
variabel yang akan kita gunakan untuk suatu program.
12. Typedef Struct : adalah suatu tipe data abstrak yang merupakan gabungan dari typedef
dan struct. Tujuannya adalah menggantikan nama tipe data sesuai dengan keinginan kita
dan juga menghubungkan tiap data melalui tanda titik (.)
13. Void buatsenarai(list *L) : Prosedur untuk Membuat Senarai.

10

14. void sisipsenarai (list *L, list t, list p) : Prosedur untuk sisipsenarai.
15. list nodbaru(int m) : Fungsi untuk membuat linked list baru.
16. Void cetaksenarai(list L) : Fungsi untuk mencetak senarai
Listing program linked list 03
/*
* Linked list 3.cpp
*
* Created on: Jun 3, 2014
*

Author: KOMPUTER12

*/
#include <iostream>
#include <cstring>
class node
{
public:
int x;
node *next;
};
using namespace std;
int main()
{
int n, i;
node*awal, *akhir,*temp;
awal=new node;
akhir=awal;
cout<<"input data=";
cin>>n;
for(i=1;i<=n;++i){
temp=new node;

11

temp->next=NULL;
cout<<"data"<<i<<"=";
cin>>temp->x;
akhir->next=temp;
akhir=temp;
}
cout<<"seluruh data\n";
temp=awal->next;
while(temp->next!=NULL){
cout<<temp->x<<endl;
temp=temp->next;
}
while(temp!=NULL){
cout<<temp->x<<endl;
temp=temp->next;
}
int p;
cout<<"Hapus posisi ke";
cin>>p;
node*temp1,*temp2;
temp1=awal;
for(i=1;i<p;++i)
temp1=temp1->next;
temp2=temp1->next;
temp1->next=temp2->next;
delete temp2;
cout<<"Seluruh Data\n";
temp=awal->next;
while(temp!=NULL){
cout<<temp->x<<endl;
temp=temp->next;
}

12

return 0;
}
Hasil Output program Linked list 03

Penjelasan Listing program linked list 03


1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah
komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau
teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include : Pengarah Praprocessor
Include adalah pengarah suatu library yang digunakan untuk suatu program.
3. Iostream : Library
Iostream adalah library untuk input dan output cin dan cout.
4. Tanda { dan } adalah tanda untuk mengawali dan mengakhiri program.
5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.
6. Cout : untuk menampilkan output program yang sudah dituliskan.
7. Cin : untuk menginputkan data yang dimasukkan oleh user.
8. <cstring> : pengarah untuk menambah tipe data String.
9. node*awal, *akhir,*temp; : Penggunaan pointer pada Linked list.
10. Statement For : Digunakan untuk perulangan pada program.
11. Statement While : Digunakan untuk perulangan pada program.

13

12. class node


{
public:
int x;
node *next;
};
Adalah salah satu modifikasi tipe data abstrak pada linked list.

Tugas Praktikum
Tugas Praktikum yang diberikan adalah modifikasi program linked list 01 , 02 dan 03 dengan
tipe data abstrak.

Listing program Linked list 01 typedef


/*
* Linked list.cpp
*
* Created on: Jun 3, 2014
*
Author: KOMPUTER12
*/
#include <iostream>
#include <malloc.h>
#include <list>
using namespace std;
typedef int i;
int main()
{
i huruf;
struct ListEntry{
int number;
struct ListEntry *next;

14

}start, *node;
start.next=NULL;
node=&start;
for(huruf=1;huruf<=10;huruf++)
{
node->next=(struct ListEntry*)malloc(sizeof(struct ListEntry));
node=node->next;
node->number=huruf;
node->next=NULL;
}
node=start.next;
while(node)
{
cout<<node->number<<" ";
node=node->next;
}
return 0;
}

Hasil Output program linked list 01 typedef

15

Penjelasan Listing program Linked list 01 typedef


1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah
komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau
teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include : Pengarah Praprocessor
Include adalah pengarah suatu library yang digunakan untuk suatu program.
3. Iostream : Library
Iostream adalah library untuk input dan output cin dan cout.
4. Tanda { dan } adalah tanda untuk mengawali dan mengakhiri program.
5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.
6. Cout : untuk menampilkan output program yang sudah dituliskan.
7. Cin : untuk menginputkan data yang dimasukkan oleh user.
8. Malloc.h : pengarah suatu library yang digunakan untuk mengalokasikan memori
9. <List> : pengarah untuk melakukan kegiatan linked list.
10. Statement For : Digunakan untuk perulangan pada program.
11. Tipe Data Abstrak typedef : Suatu tipe data abstrak yang memungkinkan usernya untuk
mengganti tipe data sesuai dengan keinginannya
12. Statement While : Digunakan untuk perulangan pada program.

Listing program linked list 02 struct


/*
* Linked list 2.cpp
*
* Created on: Jun 3, 2014
*

Author: KOMPUTER12

*/

#include <iostream>
#include <stdlib.h>
#include <malloc.h>

16

#define nil NULL


#define info(P) P->info
#define next(P) P->next
#define first(L) (L)
typedef int infotype;
typedef struct telmtlist *alamat;
using namespace std;
typedef struct telmtlist
{
infotype info;
alamat next;
}elmtlist;
typedef alamat list;
struct linked{
int i,k,nilai;
}linked;
void buatsenarai(list *L)
{
first(*L) = nil;
}
list nodbaru(int m)
{
list n;
n = (list) malloc(sizeof(elmtlist));
if (n!= NULL)
{

17

info(n) = m;
next(n) = nil;
}
return n;
}

void sisipsenarai (list *L, list t, list p)


{
if(p==nil)
{
t->next=*L;
*L=t;
}
else
{
t->next=p->next;
p->next=t;
}
}
void cetaksenarai(list L)
{
list ps;
for(ps=L;ps!=nil;ps=ps->next)
{
cout<<" "<<info(ps)<<" -->";
}
cout<<" NULL"<<endl;
}
int main()

18

{
list pel;
list n;

buatsenarai (&pel);
cout<<"Masukkan Banyak Data = ";
cin>>linked.k;
for(linked.i=1;linked.i<=linked.k;linked.i++)
{
cout<<"Masukkan Data Senarai ke- "<<linked.i<<" = ";
cin>>linked.nilai;
n=nodbaru(linked.nilai);
sisipsenarai (&pel,n,NULL);
}
cetaksenarai(pel);
return 0;
}
Hasil Output program Linked list 02 struct

Penjelasan Listing program linked list 02 struct


1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah
komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau
teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include : Pengarah Praprocessor
Include adalah pengarah suatu library yang digunakan untuk suatu program.

19

3. Iostream : Library
Iostream adalah library untuk input dan output cin dan cout.
4. Tanda { dan } adalah tanda untuk mengawali dan mengakhiri program.
5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.
6. Cout : untuk menampilkan output program yang sudah dituliskan.
7. Cin : untuk menginputkan data yang dimasukkan oleh user.
8. Malloc.h : pengarah suatu library yang digunakan untuk mengalokasikan memori
9. <List> : pengarah untuk melakukan kegiatan linked list.
10. Stdlib.h : pengarah suatu library yang digunakan untuk operasi artimatika dalam suatu
program.
11. Void buatsenarai(list *L) : Prosedur untuk Membuat Senarai.
12. void sisipsenarai (list *L, list t, list p) : Prosedur untuk sisipsenarai.
13. list nodbaru(int m) : Fungsi untuk membuat linked list baru.
14. Void cetaksenarai(list L) : Fungsi untuk mencetak senarai
15. Struct : Tipe data abstrak yang mempunyai class dan member sendiri-sendiri.

Listing program linked list 03 typedef struct


/*
* Linked list 3.cpp
*
* Created on: Jun 3, 2014
*

Author: KOMPUTER12

*/
#include <iostream>
#include <cstring>
class node
{
public:
int x;
node *next;
};

20

typedef struct linked{


int n,i;
int p;
}list;
using namespace std;
int main()
{
linked list;
node*awal, *akhir,*temp;
awal=new node;
akhir=awal;
cout<<"Input data=";
cin>>list.n;
for(list.i=1;list.i<=list.n;++list.i){
temp=new node;
temp->next=NULL;
cout<<"data"<<list.i<<"=";
cin>>temp->x;
akhir->next=temp;
akhir=temp;
}
cout<<"Seluruh data\n";
temp=awal->next;
while(temp->next!=NULL){
cout<<temp->x<<endl;
temp=temp->next;
}
while(temp!=NULL){
cout<<temp->x<<endl;
temp=temp->next;
}

21

cout<<"Hapus posisi ke";


cin>>list.p;
node*temp1,*temp2;
temp1=awal;
for(list.i=1;list.i<list.p;++list.i)
temp1=temp1->next;
temp2=temp1->next;
temp1->next=temp2->next;
delete temp2;
cout<<"Seluruh Data\n";
temp=awal->next;
while(temp!=NULL){
cout<<temp->x<<endl;
temp=temp->next;
}
return 0;
}
Hasil Output program linked list 03 typedef struct

22

Penjelasan Listing program linked list 03 typedef struct


1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah
komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau
teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include : Pengarah Praprocessor
Include adalah pengarah suatu library yang digunakan untuk suatu program.
3. Iostream : Library
Iostream adalah library untuk input dan output cin dan cout.
4. Tanda { dan } adalah tanda untuk mengawali dan mengakhiri program.
5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.
6. Cout : untuk menampilkan output program yang sudah dituliskan.
7. Cin : untuk menginputkan data yang dimasukkan oleh user.
8. <cstring> : pengarah untuk menambah tipe data String.
9. node*awal, *akhir,*temp; : Penggunaan pointer pada Linked list.
10. Statement For : Digunakan untuk perulangan pada program.
11. Statement While : Digunakan untuk perulangan pada program.

12. class node


{
public:
int x;
node *next;
};
Adalah salah satu modifikasi tipe data abstrak pada linked list.
13. Typedef Struct : adalah suatu tipe data abstrak yang merupakan gabungan dari typedef
dan struct. Tujuannya adalah menggantikan nama tipe data sesuai dengan keinginan kita
dan juga menghubungkan tiap data melalui tanda titik (.)

23

BAB III
KESIMPULAN
1. Linked List adalah struktur data yang paling sederhana yaitu Linked List atau struktur
Berkait atau Senarai Berantai.
2. 2 Komponen Linked list : Data dan Pointer.
3. Deklarasi Linked List :

Struct FileList
{
char filename[64];
struct FileList *next;
}
4. Linked List mempunyai 2 Macam Bentuk , yaitu :

Bentuk node single linked list NON-CIRCULAR

Single linked list NON-CIRCULAR menggunakan HEAD

5. Linked List mempunyai 4 Macam Teknik Node , yaitu :


Teknik menambah node di depan
Teknik menambah node di belakang
Teknik menghapus node di depan
Teknik menghapus node di belakang
6. Penggunaan tipe data abstrak dalam Linked list sangat membantu , karena linked list
yang sederhana bisa di modifikasi dengan tipe data yang kita inginkan.

24

BAB IV
DAFTAR PUSTAKA

Ardhana. YM Kusuma. 2013. Struktur Data dalam Ilustrasi Eclipse Indigo C ++.
Yogyakarta: CAPS (Center of Academic Publishing Service).

25

Anda mungkin juga menyukai