Rabu, 30 April 2014

Program Linked List

#include <iostream>
// merupakan library untuk menyertakan header file standard iostream.
#include <malloc.h>
// merupakan library untuk menyertakan header file standard iostream.
using std::cout;
//perintah agar cout agar dapat berfungsi
typedef int typeinfo;
typedef struct typenode *typeptr;
typedef struct typenode {typeinfo info;
typeptr next;};
//mendeklarasian bahwa typeinfo bertipe integer serta menjadikan struct typenode dengan fungsi *typeptr dan menjelaskan isinya.
typeptr awal,akhir;
void buatlistbaru();
void sisipdepan (typeinfo IB);
void sisipbelakang (typeinfo IB);
void sisiptengah (typeinfo IB);
void hapuslist(typeinfo IB);
void cetaklist ();
int main()

//mendeklarasikan typeptr ke dalam variabel awal dan akir serta mendeklarasikan beberapa fungsi kedalam nilai IB
{
buatlistbaru();
sisipdepan(10);
sisipbelakang(25);
sisipbelakang(100);
sisiptengah(50);
cetaklist ();
hapuslist (50);
cetaklist ();
return 0;
}
// memberikan angka yang akan dimasukan ke program sesuai dengan perintah
void buatlistbaru()
{        typeptr list;
list = (typenode *) malloc(sizeof(typenode));
list=NULL;
awal=list;
akhir=list;
}
//mendeklarasikan program dan menentukan letak awal dan akir dari list, dan nilai mula- mual pointer adalah NULL atau kosong
void sisipdepan(typeinfo IB)
{   typeptr NB;
NB=(typenode *) malloc(sizeof(typenode));
NB->info=IB;
if (awal == NULL)
{ awal = NB;
akhir =NB; }
else
{ NB->next=awal;}
awal=NB;
}
//memberikan perintah menyisipkan suatu node yang aka diletakan di bagian awal list.dengan ketentuan jika info awal sama dengan NULL maka pointer awal dan akir menunjuk ke pointer NB dan jika info awal tidak sama dengan NULL maka alamat pointer akhir menunjuk ke pointer awal dan pointer awal menunjuk ke pointer list .
void sisipbelakang(typeinfo IB)
{   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;
}
//memberikan perintah menyisipkan suatu node yang aka diletakan di bagian belakang list.dengan ketentuan jika info awal sama dengan NULL maka pointer awal dan akir menunjuk ke pointer NB dan jika info awal tidak sama dengan NULL maka alamat pointer akhir menunjuk ke pointer NB dan pointer akhir menunjuk ke pointer list serta alamat pointer akhir kosong/NULL
void sisiptengah(typeinfo IB)
{   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;
}
//memberikan perintah menyisipkan suatu node yang aka diletakan di bagian tengah list.dengan ketentuan jika info awal sama dengan NULL maka pointer bantu sama dengan awal dan memberi permisalan lagi yaitu jika IB lebih besar daripada info dari bantu next maka memindahkan alamat yang ditunjuk pointer bantu ke node selajutnya,memindahkan alamat yang dituju NB ke alamat yang dituju bantu dan memindahkan alamat bantu ke NB
void hapuslist(typeinfo IH)
{ typeptr hapus, bantu;
if(awal==NULL)
cout << “List masih kosong”;
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);}
}
}
//mendeklarasikan variabel dan memerintahkan program untuk menghapus suatu node list dengan ketentuan.jika info awal sama dengan NULL, maka mencetak tulisan “List masih kosong” dan jika tidak terpenuhi permisalan tersebut maka akan menjalankan permisalan jika info awal sama dengan IH, maka pointer hapus menunjuk ke pointer awal,memindah pointer awal ke alamat yang ditunjuk hapusnext.dan jika tidak terpenuhi permisalan tersebut maka akan menjalankan permisalan lainya dan memindahkan pointer hapus menunjuk ke pointer awal dan jika info dari alamat yang dituju bantu adalah IH dan alamat yang dituju bantu adalah NULL, maka memindahkan alamat yang ditunjuk pointer bantu ke alamat yang dituju pointer bantu serta memindahkan pointer hapus ke alamat yang dituju bantu dan akan memberikan permisalan lagi jika hapus sama dengan NULL, maka akan mencetak tulisan “List tidak ditemukan” dan jika permisalan tidak terpenuhi maka memindahkan alamat yang dituju pointer bantu ke alamat yang ditujun pointer hapus.
void sisiptengah(typeinfo IB);
void cetaklist()
{    typeptr bantu;
bantu=awal;
while (bantu!=NULL)
{
cout << ” ” << bantu->info;
cout << ” ” ;
bantu=bantu->next;
}
}
//memerintahkan untuk mengecek dan mencetak hasil program
hasil output program :
Mohon maaf bila ada terjadi kesalahan pada program ini. karena masih tahap pembelajaran. 

Tidak ada komentar:

Posting Komentar

Hello World

" " " "