Rabu, 27 Oktober 2010

PLUG8_PrakSD_123090006_tugaske2

LAPORAN PRAKTIKUM
IMPLEMENTASI STRUKTUR DATA
MODUL III
LINKED LIST DENGAN POINTER



di susun oleh :
DIAH ANGGRAINI
123090006
Plug 8

Ass/coass
Widy Sulistianto/Ial IrwanArahman

TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL ”VETERAN” YOGYAKARTA
2010

Sourcecode linklist1.cpp

#include
#include
#define true 1
#define false 0
using std::cout;

typedef int typeinfo;
typedef struct typenode *typeptr;
typedef struct typenode {typeinfo info;typeptr next;};
typeptr awal,akhir;
void buatlistbaru();
void sisipnode(typeinfo IB);
void hapusnode(typeinfo IH);
void bacamaju();
void bacamundur();
int listkosong();
int main()
{
cout<<"list mula mula:\n"; buatlistbaru(); sisipnode(50); sisipnode(20); sisipnode(5); sisipnode(100); sisipnode(70); sisipnode(25); bacamaju(); cout<<"\n\nhapus node 50\n"; cout<<"\nkondisi list setelah dihapus,dibaca dari belakang:\n\n"; hapusnode(50); bacamundur(); return 0; } void buatlistbaru() { typeptr list; list=NULL; awal=list; akhir=list; } int listkosong() {if(awal==NULL) return(true); else return(false);} void sisipnode(typeinfo IB) {typeptr NB,bantu; NB=(typenode *) malloc(sizeof(typenode)); NB->info=IB;
NB->next=NULL;
if(listkosong())
{awal=NB;
akhir=NB;}
else if(IB<= awal->info)
{NB->next=awal;
awal=NB;}
else
{bantu=awal;
while(bantu->next!=NULL && IB > bantu->next->info)
bantu=bantu->next;
NB->next=bantu->next;
bantu->next=NB;
if(IB>akhir->info)
akhir=NB;
}
}
void hapusnode(typeinfo IH)
{typeptr hapus,bantu;
if(listkosong())
cout<<"list masih kosong"; else if (awal->info==IH)
{hapus=awal;
awal=hapus->next;
free(hapus);}
else
{bantu=awal;
while (bantu->next->next!=NULL && IH!=bantu->next->info)
bantu=bantu->next;
if(IH==bantu->next->info)
{hapus=bantu->next;
if(hapus==akhir)
{akhir=bantu;
akhir->next=NULL;}
else
bantu->next=hapus->next;
free(hapus);
}
else
cout<<"node tidak ditemukan \n";} } void bacamaju() { typeptr bantu; bantu=awal; while (bantu!=NULL) { cout<<" "<info;
cout<<" "; bantu=bantu->next;
}
}
void bacamundur()
{typeptr depan,bantu;
depan=awal;
awal=akhir;
do{bantu=depan;
while(bantu->next!=akhir)
bantu=bantu->next;
akhir->next=bantu;
akhir=bantu;
}while(akhir!=depan);
akhir->next=NULL;
bantu=awal;
while(bantu!=NULL)
{
cout<<" "<info;
cout<<" "; bantu=bantu->next;}
}



Output




Penjelasan
Program linklist.cpp di atas merupakan salah satu contoh program Linked List dengan menggunakan pointer.
Pada awal program dicantumkan beberapa isi node atau info node yang kemudian akan dituangkan ke dalam bentuk output “ list mula-mula” yang pengurutannya atau pembacaan programnya menggunakan “baca maju”,sehingga outputnya nanti akan tercetak berurutan dari node dengan nilai terkecil ke nilai yang semakin besar.Selain itu,didalam program ini juga terdapat bebarapa fungsi untuk mengolah list yang sudah tersedia tersebut,menjadi lebih bervariasi yaitu fungsi untuk menyisipkan node, fungsi untuk menghapus node dan fungsi untuk mencetak node dari belakang. Pada output kedua dihasilkan output berupa hasil dari fungsi penghapusan node 50 dan kemudian dicetak menggunakan “bacamundur”,sehingga cetakannya dimulai dari node dengan nilai terbesar ke node yang lebih kecil nilainya.


Tidak ada komentar:

Posting Komentar