Jumat, 02 Juni 2017

Linked List ( Struktur Data MOdul 10 )

            Assalamu’alaikum Wr, Wb, oke pada kesempatan kali ini saya akan membahas sebuah program yang bernama lingked listpa itu 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”).
            Oke Disini saya mempunyai beberapa contoh program lingked list, langsung saja tanpa berlama – lama kita masuk kecontoh pertama
Script Praktikum 10.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
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;
}
script itu berfungsi untuk memberitahukan bahwa variable pointer *s itu null atau 0, dan n itu mempunyai nilai dari variable data yang akan di isi. dan untuk melakukan pencetakan menggunakan for. kemungkinan dalam nilai variable data itu mempunyai beberapa nilai dalam elemennya maka menggunakan for.dan terdapat script n=NodBaru(55); itu maksudnya adalah jilai yang akan keluar berupa nilai 55 , jika 55 itu di ganti dengan 90 maka outputnya adalah 90, bisa di bilai itu adalah nilai dalam variable data
Script Praktikum 10.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 :

Dalam Program Linkedlist ini hampir sama dengan program sebelumnya, 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 , yang akan di gunakan sebagai kondisi if else jika kondisi p itu nol maka statement ini yang akan di jalankan yaitu p->next maka hasilnya null atau nol dan jika p -> maka hasilnya nim mahasiswa dan dalam function add itu terdapat output (*p)->nim maka yang akan keluar itu nim mahasiswa , jika variablenya bukan nim misalnya next maka yang akan keluar outputnya NULL dan dalam fungsi utama terdapat pemanggilan function add, dimana dalam daftar parameternya itu (mahasiswa **p, int nim) dan kenapa bukan daftar parameter itu yang di panggil dan di ganti dengan (&head,56) masudnya adalah head itu kepala jadi nilai pertama atau nim perta yang akan keluara, dan knapa nim di ganti dengan 56 itu menunjukan nilai dari variable nim itu sendiri.

Script Latihan 10.1
#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.
            Jadi dalam video ini terdapat function void TambahElemen yang berfungsi untuk menambahkan nilai dalam antrian, bisa dilihat di script ( terdapat script 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.
            Dan untuk function TampilkanNilai berfungsi untuk menampilkan antrian yang belum dihapus antriannya dan yang sudah, jadi tergantung penempatan funtion jika function ditempatkan sebelum function hapus maka antrian yang sebelum di hapus akan tampil, dan jika di letakan setelah function hapus maka antrian pun berubah dan hasilnya antian yang telah terhapus yang akan keluar.
            Dan dalam pemanggilan function tambah elemen itu daftar para meternya diganti itu hanya sebai penunjuk jadi nilai yang akan keluar itu bagan kepala dan ekor, dan kenapa dalam daftar parameter nilai di isi dengan 10 – 40 itu menunjukan bahwa nilai itu merupakan isi dari variable nilai itu
Nah itulah beberapa program Lingked List dan juga pembahasan yang dapat saya sharing kepada kalian, semoga ilmu yang saya bagikan dapat bermanfaat bagi kalian semua para pembaca, mungkin sampai disini dulu sharing tentang pemrograman khususnya program Lingked List yang bisa saya posting. Dan Jangan lupa ya jika kalian mempunyai kritik dan saran silahkan tambahkan pada kolom komentar. Terima kasih atas kunjungan kalian.