LINKED LIST
Tugas
Disusun Sebagai Tugas
Pada Mata Kuliah Praktikum Struktur Data
Oleh:
Deprilana Ego Prakasa
14102055
PROGRAM STUDI S1 TEKNIK INFORMATIKA
SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM
PURWOKERTO
2015
LINKED LIST
 Pengertian Linked List
Linked list adalah sejumlah simpul (node) yang dikaitkan dengan simpul yang
lain dengan bantuan pointer dalam suatu urutan tertentu. Suatu linked list
dikatakan single linked list apabila hanya ada satu pointer yang menghubungkan
setiap node (satu arah “next”).
 Single Linked List
Single Linked List adalah single linked list yang pointer nextnya menunjuk
pada dirinya sendiri. Jika single linked list tersebut terdiri dari beberapa node,
maka pointer next pada node terakhir akan menunjuk ke node terdepannya.
 Single Linked List dapat dibagi menjadi:
1. Single Linked List Non Circular
Linked List yang pointer nya selalu mengarah ke Node yang menampung
*next bernilai NULL, jadi arahnya tidak menunjuk pointer didepannya sehingga
tidak dapat kembali ke pointer - pointer sebelumnya
 Deklarasi node dengan struct pada single linked list:
struct tnode
{
int data;
struct tnode *next;
}
2. Single Linked List Circular
Single Linked List yang pointer next-nya menunjuk ke dirinya sendiri, jika terdiri
dari beberapa node maka pointer terakhirnya(tail) akan menunjuk ke pointer
terdepannya(head).
 Deklarasi Single Linked List Circular:
struct tnode
{
int data;
tnode *next;
};
void main()
{
head = new tnode;
head->next = head;
}
o Praktik
1. Buatlah program menggunakan Single Linked List Non Circular untuk
menyimpan
Nama dan NIM data mahasiswa berikut ini :
Nama NIM
Dede 12347867
Kiki 98765674
Nina 67453279
Andi 83450120
2. Hapus list Andi !
3. Tampilkan di layar hasilnya sbb :
PROGRAM SENARAI BERANTAI
Masukkan nama ke-1 : Dede
Masukkan NIM ke-1 : 12347867
Dst
DATA MAHASISWA
Nama NIM
Dede 12347867
Kiki 98765674
Nina 67453279
Andi 83450120
Andi terhapus
DATA MAHASISWA
Nama NIM
Dede 12347867
Kiki 98765674
Nina 67453279
Source code :
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
typedef struct nama {
string data_nama;
nama *next_nama;
};
nama *head_nama ;
typedef struct nim{
int data_nim;
nim *next_nim;
};
nim *head_nim;
void initHead();
int Emptynama();
int Emptynim();
void insertnama(int datanama);
void insertnim(int datanim);
void tampil();
void hapusnama();
void hapusnim();
void initHead()
{
head_nama = NULL; //NULL <> null!!!
head_nim = NULL; //NULL <> null!!!
}
int Emptynama()
{
return (head_nama == NULL) ? 1:0;
}
int Emptynim()
{
return (head_nim == NULL) ? 1:0;
}
void insertnama(string datanama)
{
nama *baru,*bantu;
baru = new nama;
baru->data_nama = datanama;
baru->next_nama = NULL;
if(Emptynama()==1)
{
head_nama=baru;
head_nama->next_nama = NULL;
}
else
{
bantu=head_nama;
while(bantu->next_nama!=NULL)
{
bantu=bantu->next_nama;
}
bantu->next_nama = baru;
}
}
void insertnim(int datanim)
{
nim *baru,*bantu;
baru = new nim;
baru->data_nim = datanim;
baru->next_nim = NULL;
if(Emptynim()==1)
{
head_nim=baru;
head_nim->next_nim = NULL;
}
else
{
bantu=head_nim;
while(bantu->next_nim!=NULL)
{
bantu=bantu->next_nim;
}
bantu->next_nim = baru;
}
}
void hapusnama()
{
nama *hapus,*bantu;
string d;
if (Emptynama()==0)
{
if(head_nama->next_nama != NULL)
{
bantu = head_nama;
while(bantu->next_nama->next_nama!=NULL)
{
bantu = bantu->next_nama;
}
hapus = bantu->next_nama;
d = hapus->data_nama;
bantu->next_nama = NULL;
delete hapus;
} else
{
d = head_nama->data_nama;
head_nama = NULL;
}
cout<<" "<<d<<" terhapusn";
} else
cout<<" ( Masih kosong )n";
}
void hapusnim()
{
nim *hapus,*bantu;
int d;
if (Emptynim()==0)
{
if(head_nim->next_nim != NULL)
{
bantu = head_nim;
while(bantu->next_nim->next_nim!=NULL)
{
bantu = bantu->next_nim;
}
hapus = bantu->next_nim;
d = hapus->data_nim;
bantu->next_nim = NULL;
delete hapus;
} else
{
d = head_nim->data_nim;
head_nim = NULL;
}
cout<<" n";
} else
cout<<" ( Masih kosong )n";
}
void tampil()
{
nim *bantu;
bantu = head_nim;
nama *help;
help = head_nama;
if(Emptynim()==0 && Emptynama()==0)
{
cout<<"tNamattNIMn";
cout<<"t------------------------n";
while(bantu!=NULL && help!=NULL)
{
cout<<"t"<<help->data_nama<<"tt"<<bantu->data_nim<<"n";
help=help->next_nama;
bantu=bantu->next_nim;
}
cout<<"n";
}
else
cout<<"( Masih kosong )n";
}
int main()
{
cout<<"ttt ===============================n";
cout<<"ttt Single Linked List Non Circularnttt
===============================nn1. t";
initHead();
cout<<"donennn Tampilkan isi list :n";
cout<<" ";tampil() ;
cout<<"n Masukkan Nama dan NIM :n";
string data_nama;
int data_nim;
for(int i=1;i<=4;i++)
{
cout<<" Masukkan nama ke-"<<i<<" : ";
cin>>data_nama;
insertnama(data_nama);
cout<<" Masukkan nim ke-"<<i<<" : ";
cin>>data_nim;
insertnim(data_nim);
}
cout<<"n";
cout<<" Tampilkan isi list :nn";
tampil() ;
cout<<"n Hapus 1 data terakhirnn";
for(int i=1;i<2;i++)
{
hapusnama();
hapusnim();
}
cout<<"n";
cout<<" Tampilkan isi list :nn";
tampil();
}
Output :

Resume praktikum 5__linked_list

  • 1.
    LINKED LIST Tugas Disusun SebagaiTugas Pada Mata Kuliah Praktikum Struktur Data Oleh: Deprilana Ego Prakasa 14102055 PROGRAM STUDI S1 TEKNIK INFORMATIKA SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM PURWOKERTO 2015
  • 2.
    LINKED LIST  PengertianLinked List Linked list adalah sejumlah simpul (node) yang dikaitkan dengan simpul yang lain dengan bantuan pointer dalam suatu urutan tertentu. Suatu linked list dikatakan single linked list apabila hanya ada satu pointer yang menghubungkan setiap node (satu arah “next”).  Single Linked List Single Linked List adalah single linked list yang pointer nextnya menunjuk pada dirinya sendiri. Jika single linked list tersebut terdiri dari beberapa node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya.  Single Linked List dapat dibagi menjadi: 1. Single Linked List Non Circular Linked List yang pointer nya selalu mengarah ke Node yang menampung *next bernilai NULL, jadi arahnya tidak menunjuk pointer didepannya sehingga tidak dapat kembali ke pointer - pointer sebelumnya  Deklarasi node dengan struct pada single linked list: struct tnode { int data; struct tnode *next; }
  • 3.
    2. Single LinkedList Circular Single Linked List yang pointer next-nya menunjuk ke dirinya sendiri, jika terdiri dari beberapa node maka pointer terakhirnya(tail) akan menunjuk ke pointer terdepannya(head).  Deklarasi Single Linked List Circular: struct tnode { int data; tnode *next; }; void main() { head = new tnode; head->next = head; }
  • 4.
    o Praktik 1. Buatlahprogram menggunakan Single Linked List Non Circular untuk menyimpan Nama dan NIM data mahasiswa berikut ini : Nama NIM Dede 12347867 Kiki 98765674 Nina 67453279 Andi 83450120 2. Hapus list Andi ! 3. Tampilkan di layar hasilnya sbb : PROGRAM SENARAI BERANTAI Masukkan nama ke-1 : Dede Masukkan NIM ke-1 : 12347867 Dst DATA MAHASISWA Nama NIM Dede 12347867 Kiki 98765674 Nina 67453279 Andi 83450120 Andi terhapus DATA MAHASISWA Nama NIM Dede 12347867 Kiki 98765674 Nina 67453279
  • 5.
    Source code : #include<iostream> #include <conio.h> #include <string> using namespace std; typedef struct nama { string data_nama; nama *next_nama; }; nama *head_nama ; typedef struct nim{ int data_nim; nim *next_nim; }; nim *head_nim; void initHead(); int Emptynama(); int Emptynim(); void insertnama(int datanama); void insertnim(int datanim); void tampil(); void hapusnama(); void hapusnim(); void initHead() { head_nama = NULL; //NULL <> null!!! head_nim = NULL; //NULL <> null!!! } int Emptynama() { return (head_nama == NULL) ? 1:0; } int Emptynim() { return (head_nim == NULL) ? 1:0; } void insertnama(string datanama)
  • 6.
    { nama *baru,*bantu; baru =new nama; baru->data_nama = datanama; baru->next_nama = NULL; if(Emptynama()==1) { head_nama=baru; head_nama->next_nama = NULL; } else { bantu=head_nama; while(bantu->next_nama!=NULL) { bantu=bantu->next_nama; } bantu->next_nama = baru; } } void insertnim(int datanim) { nim *baru,*bantu; baru = new nim; baru->data_nim = datanim; baru->next_nim = NULL; if(Emptynim()==1) { head_nim=baru; head_nim->next_nim = NULL; } else { bantu=head_nim; while(bantu->next_nim!=NULL) { bantu=bantu->next_nim; } bantu->next_nim = baru; } } void hapusnama() { nama *hapus,*bantu;
  • 7.
    string d; if (Emptynama()==0) { if(head_nama->next_nama!= NULL) { bantu = head_nama; while(bantu->next_nama->next_nama!=NULL) { bantu = bantu->next_nama; } hapus = bantu->next_nama; d = hapus->data_nama; bantu->next_nama = NULL; delete hapus; } else { d = head_nama->data_nama; head_nama = NULL; } cout<<" "<<d<<" terhapusn"; } else cout<<" ( Masih kosong )n"; } void hapusnim() { nim *hapus,*bantu; int d; if (Emptynim()==0) { if(head_nim->next_nim != NULL) { bantu = head_nim; while(bantu->next_nim->next_nim!=NULL) { bantu = bantu->next_nim; } hapus = bantu->next_nim; d = hapus->data_nim; bantu->next_nim = NULL; delete hapus; } else { d = head_nim->data_nim; head_nim = NULL;
  • 8.
    } cout<<" n"; } else cout<<"( Masih kosong )n"; } void tampil() { nim *bantu; bantu = head_nim; nama *help; help = head_nama; if(Emptynim()==0 && Emptynama()==0) { cout<<"tNamattNIMn"; cout<<"t------------------------n"; while(bantu!=NULL && help!=NULL) { cout<<"t"<<help->data_nama<<"tt"<<bantu->data_nim<<"n"; help=help->next_nama; bantu=bantu->next_nim; } cout<<"n"; } else cout<<"( Masih kosong )n"; } int main() { cout<<"ttt ===============================n"; cout<<"ttt Single Linked List Non Circularnttt ===============================nn1. t"; initHead(); cout<<"donennn Tampilkan isi list :n"; cout<<" ";tampil() ; cout<<"n Masukkan Nama dan NIM :n"; string data_nama; int data_nim; for(int i=1;i<=4;i++) { cout<<" Masukkan nama ke-"<<i<<" : "; cin>>data_nama;
  • 9.
    insertnama(data_nama); cout<<" Masukkan nimke-"<<i<<" : "; cin>>data_nim; insertnim(data_nim); } cout<<"n"; cout<<" Tampilkan isi list :nn"; tampil() ; cout<<"n Hapus 1 data terakhirnn"; for(int i=1;i<2;i++) { hapusnama(); hapusnim(); } cout<<"n"; cout<<" Tampilkan isi list :nn"; tampil(); } Output :