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.



Tidak ada komentar:
Posting Komentar