Rabu, 27 Oktober 2010

Program 3.2 Linked List dengan Pointer

pertama tama sebut nim saya dulu 123090091..
lalu ini source code programnya plus penjelasnnya :

#include //file header untuk proses input output

#include //karena adanya perhitungan

using std::cout; //memakai standar cout pada file iostream

typedef int typeinfo; //deklarasi struktur

typedef struct typenode *typeptr; //deklarasi struktur

typedef struct typenode{typeinfo info;

typeptr next;

}; //deklarasi struktur

typeptr awal,akhir; //pointer awal dan akhir

void buatlistbaru(); //deklarasi perintah program buat list

void sisipdepan(typeinfo IB); //deklarasi perintah program sisipdepan

void sisipbelakang(typeinfo IB); //deklarasi perintah program

sisipbelakang

void sisiptengah(typeinfo IB); //deklarasi perintah program sisip

tengah

void hapuslist(typeinfo IB); //deklarasi perintah program hapus list

void cetaklist();//deklarasi perintah program setak list

int main()//fungsi ini menjadi awal dan akhir eksekusi bertipe integer

{ //awal eksekusi program

buatlistbaru(); //pembuatan list baru

sisipdepan(10); //penyisipan node di depan 10

sisipbelakang(25);//penyisipan node di belakang 25

sisipbelakang(100); //penyisipan node di belakang 100

sisiptengah(50); //penyisipan node di tengah 50

cetaklist(); //mencetak list

hapuslist(50); //menghapus list 50

cetaklist(); //mencetak list

return 0; //pengembalian nilai 0

}

void buatlistbaru() //deklarasi variabel

{

typeptr list;

list=(typenode *) malloc(sizeof(typenode));

list=NULL;

awal=list;

akhir=list;

}

void sisipdepan(typeinfo IB) //deklarasi variabel

{

typeptr NB;

NB=(typenode *) malloc(sizeof(typenode));

NB->info=IB;

if (awal==NULL)

{ awal=NB;

akhir=NB; }

else

{ NB->next=awal; }

awal=NB;

}

void sisipbelakang (typeinfo IB) //deklarasi variabel

{

typeptr NB;

NB=(typenode *) malloc(sizeof(typenode));

NB->info=IB;

if (awal==NULL)

{ awal=NB;

akhir=NB; }

else

{ akhir->next=NB;}

akhir=NB;

akhir->next=NULL;

}

void sisiptengah(typeinfo IB)//deklarasi variabel

{

typeptr NB, bantu;

NB=(typenode *) malloc(sizeof(typenode));

NB->info=IB;

NB->next=NULL;

if (awal==NULL)

{ awal=NB;

akhir=NB;

}

else

{ bantu=awal;

while ((IB > bantu->next->info) && (bantu->next!=NULL))

bantu=bantu->next;

NB->next=bantu->next;

bantu->next=NB;

}

}

void hapuslist(typeinfo IH)//deklarasian variabel

{

typeptr hapus, bantu;

if (awal==NULL)

{

cout << "List masih kosong!\n";

}

else

{ if (awal->info==IH)

{ hapus=awal;

awal=hapus->next;

free(hapus); }

else

{ bantu=awal;

while ((bantu->next->info!=IH) && (bantu->next!=NULL))

{ bantu=bantu->next; }

hapus=bantu->next;

if (hapus==NULL)

{ cout << "List tidak ditemukan\n";

}

else

{ if (hapus==akhir)

{ akhir=bantu;

akhir->next=NULL; }

else

{ bantu->next=hapus->next; }

free(hapus); }

}

}

}

void cetaklist() //deklarasian variabel

{ typeptr bantu;

bantu=awal;

while (bantu!=NULL)

{ cout << " " <<>info;

cout << " ";

bantu=bantu->next; }

}

Tidak ada komentar:

Posting Komentar