Single Linked List Non Circular
Pengertian:
Single : artinya field pointer-nya hanya satu buah saja dan satu arah.
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
Ilustrasi Linked List
- Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data.
- Pada akhir linked list, node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list
Contoh program single linked list non circular tambah di belakang :
#include <stdio.h>
#include <stdlib.h>
#include <constream.h>
#include <ctype.h>
#include <string.h>
struct siswa
{
char nrp[8],nama[20];
int umur;
float ipk;
};
struct simpul
{
char nrp[8],nama[20];
int umur;
float ipk;
struct simpul *berikut;
};
struct simpul *awal = NULL, *akhir = NULL;
struct siswa mhs;
void tambah_list_dibelakang(struct siswa info);
void isi_list();
void tampil_list();
void hapus_list();
void main()
{
clrscr();
isi_list();
clrscr();
tampil_list();
hapus_list();
getch();
}
void tambah_list_dibelakang(struct siswa info)
{
struct simpul *baru;
baru = (struct simpul *) malloc(sizeof(struct simpul));
strcpy (baru -> nrp,info.nrp);
strcpy (baru -> nama,info.nama);
baru -> umur = info.umur;
baru -> ipk = info.ipk;
if (awal == NULL)
{
awal = baru;
}
else
{
akhir -> berikut = baru;
}
akhir = baru;
akhir -> berikut = NULL;
}
void isi_list()
{
char jawab;
do
{
clrscr();
cout<<"NRP : ";cin>>mhs.nrp;
cout<<"Nama : ";cin>>mhs.nama;
cout<<"Umur : ";cin>>mhs.umur;
cout<<"IPK : ";cin>>mhs.ipk;
tambah_list_dibelakang(mhs);
cout<<"\nTambah Data [Y/T]? : ";
cin>>jawab;
}
while (toupper(jawab) != 'T');
}
void tampil_list()
{
struct simpul *baca;
int i;
baca = awal;
i = 1;
while (baca != NULL)
{
cout<<"Data Ke : "<<i<<endl;
cout<<"NRP : "<<baca -> nrp<<endl;
cout<<"Nama : "<<baca -> nama<<endl;
cout<<"Umur : "<<baca -> umur<<endl;
cout<<"IPK : "<<baca -> ipk<<endl;
cout<<endl;
i++;
baca = baca -> berikut;
}
}
void hapus_list()
{
struct simpul *hapus;
hapus = awal;
while (hapus != NULL)
{
awal = hapus -> berikut;
free (hapus);
hapus = awal;
}
}
EmoticonEmoticon