MODUL
X LINKED LIST
Praktikum
Studi
Kasus 1
#include<stdio.h>
#include<stdlib.h>
#include<malloc.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);
CetakSenarai(pel);
return 0;
}
Hasil
Running :
Pembahasan
:
Dalam program linked list tersebut
menggunakan struct untuk mengakses variablenya dan nod*next itu next nya
berfungsi untuk menyimpan nilai selanjutnya dan merupakan sebuah variable
pointer.
Studi
Kasus 2
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
typedef struct mahasiswa
{
int nim;
mahasiswa *next;
}*p;
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
Running :
Pembahasan
:
Dalam Program Linkedlist ini hampir
sama dengan program sebelumnya, dalam program ini akan menampilkan sebuah NIM dari
mahasiswa, sama seperti sebelumnya variable next ini bergunak untuk selanjutnya
atau bisa di bilang nilai selanjutnya yang akan keluar.
Latihan
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct node{
int data;
struct node*p;};
void TambahElemen (struct node **d, struct node **b,
int nilai){
/*membuat struktur node baru*/
struct node*temp;
temp=(struct node *)malloc (sizeof (struct node));
/*mendefinisikan field yang terdapat pada struktur
node yang baru dialokasikan*/
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");
printf("Setelah penghapusan elemen
pertama:\n");
TampilkanNilai(depan);
getch();
return 0;
}
Hasil
Running :
Pembahasan
:
Program ini merupakan sebuah
antrian dan dalam program ini terdapat penghapusan antrian. Dalam program ini menggunakan
function, pointer dan juga linked list( temp -> data ) itu dinamakan linked
list, linked list ini berguna sebagai penghubung nilai satu dengan yang lannya.







