link list atau bisa di sebut juga list liner.what is?? list linier adalah sekumlpulan element bertype sama yang mempunyai “keturunan” tertentu, dan setiap elemennya terdiri dari 2 bagian, yaitu informasi element dan informaski mengenai lamat element (head).
type elemntList : <info :infoType, Next : address>
denagn infoType adalah sebuah type terdefinisi yang menyimpan informasi dari sebuah element list.Next adalah addres (“alamat”) dari element berikutnya(suksesor).
untuk lebih jelas dapat di lihat nih di file ini download
contoh code tentang linklist (tugas linklist praktikum strukdat thun 2008-2009)…iseng buat ngejawat tantangan asprak.
/*
ahmad luky ramdani
email = gusti_gladiol[at]live.com]
web-blog = http://ahmadluky.co.cc
*/
#include “stdio.h”
#include “conio.h”
#include “string.h”
#include “malloc.h”
typedef struct mahasiswa{
char nama [30];
char nrp [10];
struct mahasiswa *next;
} mahasiswa;
typedef mahasiswa *mhs;
mhs head;
mhs tail;
mhs baru;
mhs temp;
mhs tampung;
int main(){
int pilihan;
int n,i,m;
mhs cetak;
printf(“program ini dibuat hanya untuk di jadikan untuk referensi\n”);
back:;
printf(“\n1. cetak linked list”);
printf(“\n2. Tambah belakang”);
printf(“\n3. Tambah dari depan”);
printf(“\n4. Tambah sesuadah elemt tertentu”);
printf(“\n5. hapus dari belakang”);
printf(“\n6. hapus dari depan”);
printf(“\n7. hapus sesudah elemt tertentu”);
printf(“\n8. keluar”);
printf(“\n masukkan pilihan : “);
scanf(“%d \n”, &pilihan);
switch ( pilihan ) {
//cetak link list
case 1:
if(head == NULL)
printf(“\n linged list kosong boy…”);
else {
cetak = head;
while (cetak != NULL)
{
printf(” Nama : %s nrp %s \n”, cetak -> nama, cetak -> nrp) ;
cetak = cetak->next;
}
}
getch ();
goto back;
//tambah belakang
case 2:
baru =(mhs)malloc(sizeof (mahasiswa));
if (baru ==NULL)
printf(“\n MEMORY TIDAK CUKUP”);
else {
printf(“\n nama: “);
scanf(“%s”,baru->nama);
printf(“\n NRP : “);
scanf(“%s”,baru->nrp);
baru->next=NULL;
if ( head == NULL )
head=baru;
else
tail->next=baru;
}
tail=baru;
goto back;
//tambah depan
case 3:
baru =(mhs)malloc(sizeof (mahasiswa));
if (baru==NULL)
printf(“\n MEMORY PENUH boo….”);
else{
printf(“\n nama: “);
scanf(“%s”,baru->nama);
printf(“\n NRP: “);
scanf(“%s”,baru->nrp);
baru->next=head;
head=baru;
}
goto back;
//tambah tengah
case 4:
baru=(mhs)malloc(sizeof(mahasiswa));
if (baru==NULL)
printf(“\n MEMORY PENUH BOOO…..”);
else{
printf(“\n nama: “);
scanf(“%s”,baru->nama);
printf(“\n NRP: “);
scanf(“%s”,baru->nrp);
printf(“\n tambah setelah node ka berapa???”);
printf(“\n node ke- “);
scanf(“%d”,&n);
temp=head;
for (i=1;inext;
}
baru->next=temp->next;
temp->next=baru;
}
printf(“\n sudah di tambah setelah elemnt ke-%d”,n);
goto back;
//hapus belakang
case 5:
temp=head;
while(temp->next !=tail)
temp=temp->next;
temp->next=NULL;
free(tail);
tail=temp;
printf(“\n sudah dihapus..booooo”);
getch();
goto back;
//hapus depan
case 6:
temp= head;
head=temp->next;
free(temp);
printf(“\n sudah dihapus boooo…”);
getch();
goto back;
//hapus tengah
case 7:
printf(“\n delete setelah node ke berapa??”);
printf(“\n node ke- “);
scanf(“%d”, &m);
tampung=head;
for (i=1;inext;
}
temp->next=tampung->next;
getch();
goto back;
case 8: break;
}
}

