Rabu, 14 Juni 2017

PRAKTIKUM_MODUL_10

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.

Tidak ada komentar:

Posting Komentar