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 list ditengah :
#include <stdio.h>
#include <constream.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
struct siswa
{
char nama[20];
int umur;
};
struct simpul
{
char nama[20];
int umur;
struct simpul *berikut;
};
struct simpul *awal=NULL,*akhir=NULL;
struct siswa mhs;
void tambah_list_belakang(struct siswa info);
void isi_list();
void sisip_list(struct simpul *first,struct siswa info,char posisi[20]);
void sisip_isi_list();
void tampil_list();
void hapus_list();
void main()
{
clrscr();
isi_list();
clrscr();
tampil_list();
sisip_isi_list();
tampil_list();
hapus_list();
getch();
}
void tambah_list_dibelakang(struct siswa info)
{
struct simpul *baru;
baru=(struct simpul*)malloc(sizeof(struct simpul));
strcpy(baru->nama,info.nama);
baru->umur=info.umur;
if (awal==NULL)
{
awal=baru;
}
else
{
akhir->berikut=baru;
}
akhir=baru;
akhir ->berikut=NULL;
}
void isi_list()
{
char jawab;
do
{
clrscr();
cout<<"Nama: ";gets(mhs.nama);
cout<<"Umur: ";cin>>mhs.umur;
tambah_list_dibelakang(mhs);
cout<<"\nTambah Data [Y/T]: ";
cin>>jawab;
}
while (toupper(jawab)!='T');
}
void sisip_list(struct simpul *first,struct siswa info,char posisi[20])
{
struct simpul *bantu,*baru;
baru = new simpul;
strcpy(baru->nama,info.nama);
baru->umur=info.umur;
bantu=first;
do
{
if (strcmp(posisi,bantu->nama)!=0) {bantu=bantu->berikut;}
}
while (bantu!=NULL && strcmp(posisi,bantu->nama)!=0);
baru->berikut=bantu->berikut;
bantu->berikut=baru;
}
void sisip_isi_list()
{
char cari[20];
struct siswa ganti;
cout<<"\nInput Data Baru :";
cout<<"\nNama :";gets(ganti.nama);
cout<<"\nUmur :";cin>>ganti.umur;
cout<<"\n";
cout<<"\nData Akan Disisipkan Setelah Nama: ";
gets(cari);
sisip_list(awal,ganti,cari);
}
void tampil_list()
{
struct simpul *baca;
int i;
baca=awal;
i=1;
while(baca!=NULL)
{
cout<<"\nNama : "<<baca->nama;
cout<<"\nUmur : "<<baca->umur;
cout<<"\n";
i++;
baca=baca->berikut;
}
}
void hapus_list()
{
struct simpul *hapus;
hapus=awal;
while(hapus!=NULL)
{
awal=hapus->berikut;
free(hapus);
hapus=awal;
}
}
EmoticonEmoticon