MODUL 10 LINKED LIST
LAPORAN PRAKTIKUM MODUL X
LINKED LIST
Dosen : Endra Suseno, M.Kom
ANDIKA PRATAMA
20160910005
Sistem Informasi B (2016)
DASAR TEORI
Linked List
adalah suatu cara untuk menyimpan data dengan struktur sehingga programmer
dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data kapan
saja diperlukan. Secara rinci, programmer dapat menulis suatu struct atau
definisi kelas yang berisi variabel yang memegang informasi yang ada
didalamnya, dan mempunyai suatu pointer yang menunjuk ke suatu struct sesuai
dengan tipe datanya.
Struktur dinamis
ini mempunyai beberapa keuntungan dibanding struktur array yang bersifat
statis. Struktur ini lebih dinamis, karena banyaknya elemen dengan mudah
ditambah atau dikurangi, berbeda dengan array yang ukurannya bersifat tetap.
Disamping itu, manipulasi terhadap setiap elemen seperti menyisipkan,
menghapus, maupun menambah dapat dilakukan dengan lebih mudah.
Single Linked List
Single Linked List merupakan suatu
linked list yang hanya memiliki satu variabel pointer saja. Dimana pointer
tersebut menunjuk ke node selanjutnya. Biasanya field pada tail menunjuk ke
NULL.
contoh
codingannya :
struct Mahasiswa{
char nama[25];
int usia;
struct Mahasiswa *next;
}*head,*tail;
Double
Linked List
Double Linked List merupakan suatu
linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke
node selanjutnya dan pointer yang menunjuk ke node sebelumnya. Setiap head dan
tailnya juga menunjuk ke NULL.
Contoh
codingannya :
struct
Mahasiwa{
char
nama[25];
int
usia;
struct
Mahasiswa *next,*prev; }
*head,*tail;
Praktikum 10.1
Compiler : Borland C++
- syntax
#include<stdlib.h>
#include<malloc.h>
#include<conio.h>
typedef struct nod
{
int data;
struct nod *next;
}NOD,*NODPTR;
void ciptasenarai (NODPTR*s)
{
*s=NULL;
}
NODPTR nodbaru(int m)
{
NODPTR n;
n=(NODPTR) malloc (sizeof (NOD));
if(n!=NULL)
{
n->data=m;
n->next=NULL;
}
return n;
}
void sisipsenarai (NODPTR *s,NODPTR t,NODPTR p)
{
if(p==NULL)
{
t -> next =*s;
*s= t;
}
else
{
t -> next = p-> next;
p-> next = t;
}
}
void cetaksenarai (NODPTR s)
{
NODPTR ps;
for (ps=s; ps!= NULL; ps=ps -> next)
printf("%d --> ",ps->data);
printf("NULL\n");
}
int main()
{
NODPTR pel;
NODPTR n;
ciptasenarai (&pel);
n=nodbaru(55);
sisipsenarai (&pel,n,NULL);
n= nodbaru(75);
sisipsenarai (&pel,n,NULL);
cetaksenarai(pel);
getch();
return 0;
}
- hasil run
- analisis
Dalam program linked list tersebut menggunakan struct
untuk mengakses variablenya dan perintah nod*next itu next nya berfungsi untuk
menyimpan nilai selanjutnya dan merupakan sebuah variable pointer,dalam program diatas terdapat fungsi main yang sangat dibutuhkan dalam hasil akhir karena menentukan tampilan yang diproses dalam function.
int main()
{
NODPTR pel;
NODPTR n;
ciptasenarai (&pel);
n=nodbaru(55);
sisipsenarai (&pel,n,NULL);
n= nodbaru(75);
sisipsenarai (&pel,n,NULL);
cetaksenarai(pel);
getch();
return 0;
}
{
NODPTR pel;
NODPTR n;
ciptasenarai (&pel);
n=nodbaru(55);
sisipsenarai (&pel,n,NULL);
n= nodbaru(75);
sisipsenarai (&pel,n,NULL);
cetaksenarai(pel);
getch();
return 0;
}
Praktikum 10.2
Compiler : Borland C++
- syntax
#include<stdlib.h>
#include<conio.h>
typedef struct mahasiswa
{
int nim;
mahasiswa *next;
}m;
void init (mahasiswa **p)
{
*p=NULL;
}
mahasiswa *alokasi(int nim)
{
mahasiswa *p;
p=(mahasiswa*)malloc(sizeof(mahasiswa));
if(p!=NULL)
{
p->next = NULL;
p->nim = nim;
}
return (p);
}
void add(mahasiswa **p,int nim)
{
*p= alokasi (nim);
printf("%d",(*p)->nim);
}
int main()
{
mahasiswa *head;
init (&head);
add(&head,56);
getch();
return 0;
}
- hasil run
- analisis
Dalam program in akan menampilkan sebuah
nim dari mahasiswa, sama seperti sebelumnya variable next ini bergunak untuk
selanjutnya atau bisa di bilang nilai selanjutnya yang akan keluar, dan
variable pointer p ini berguna untuk memberitahu bahwa *p ini = null atau nol,seperti program sebelumnya fungsi main menjadi hasil akhir dalam program diatas yang berfungsi untuk menampilkan tampilan pada layar.
int main()
{
mahasiswa *head;
init (&head);
add(&head,56);
getch();
return 0;
}
{
mahasiswa *head;
init (&head);
add(&head,56);
getch();
return 0;
}
Compiler : Borland C++
- syntax
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node *p;};
void tambahelemen(struct node **d,struct node **b, int nilai){
struct node*temp;
temp= (struct node *)malloc (sizeof (struct node));
temp->data=nilai;
temp->p=NULL;
if (*d == NULL) {
*d= temp;
}else{
(*b)->p = temp;}
*b = temp;}
void hapuselemen (struct node **d,struct node **b){
struct node *temp;
if (*d == NULL){
printf ("Tidak Terdapat Elemen Dalam Queue");
}else{
temp = *d;
*d = temp->p;
free (temp);
if (*d == NULL){
*b = NULL;
}
}
}
void tampilkannilai (struct node *d){
int nilai;
while (d != NULL){
nilai = d->data;
printf("%d\n", nilai);
d=d->p;
} }
int main (void){
struct node *depan, *belakang;
depan = belakang = NULL;
tambahelemen(&depan,&belakang,10);
tambahelemen(&depan,&belakang,20);
tambahelemen(&depan,&belakang,30);
tambahelemen(&depan,&belakang,40);
tampilkannilai (depan);
hapuselemen (&depan,&belakang);
printf("Nilai-Nilai didalam Queue\n");
printf("Setelah Penghapusan Pertama:\n");
tampilkannilai(depan);
return 0;
}
- hasil run
- analisis
program diatas adalah program antrian yang terdapat penghapusan
antrian. Dan Dalam
program ini menggunakan function, pointer dan juga linked list( temp -> data
), linked list ini berguna sebagai penghubung nilai
satu dengan yang lannya.function void TambahElemen yang berfungsi untuk
menambahkan nilai dalam antrian,
void tambahelemen(struct node **d,struct node **b, int nilai){
struct node*temp;
temp= (struct node *)malloc (sizeof (struct node));
temp->data=nilai;
temp->p=NULL;
if (*d == NULL) {
*d= temp;
}else{
(*b)->p = temp;}
*b = temp;}
bisa dilihat di syntax ( terdapat syntax linked list ) Function HapusElemen berguna untuk menghapus sebuah antrian di mana dalam function ini terdapat sebuah if untuk menentukan kodisi apakah terdapat antrian atau tidak.
void hapuselemen (struct node **d,struct node **b){
struct node *temp;
if (*d == NULL){
printf ("Tidak Terdapat Elemen Dalam Queue");
}else{
temp = *d;
*d = temp->p;
free (temp);
if (*d == NULL){
*b = NULL;
}
}
}
dan pada fungsi main terdapat instruksi-instruksi untuk hasil akhir yang menentukan tampilan setelah di Run.
int main (void){
struct node *depan, *belakang;
depan = belakang = NULL;
tambahelemen(&depan,&belakang,10);
tambahelemen(&depan,&belakang,20);
tambahelemen(&depan,&belakang,30);
tambahelemen(&depan,&belakang,40);
tampilkannilai (depan);
hapuselemen (&depan,&belakang);
printf("Nilai-Nilai didalam Queue\n");
printf("Setelah Penghapusan Pertama:\n");
tampilkannilai(depan);
Comments
Post a Comment