Kamis, 19 Januari 2012

Link List (penambahan(depan & belakang), hapus, dan sisip elemen)

#include <cstdlib>
#include <iostream>

using namespace std;
class linklist{
public:
linklist();
void tambah(int);
void tambahdepan(int);
void tambahbelakang(int);
void tampil();
void hapus(int);
void sisip(int,int);
private:
int data;
linklist *berikut,*p;

};

linklist::linklist(){
p=NULL;
}

void linklist::tambah(int info){
linklist *q,*t;

if(p==NULL){
p=new linklist;
p->data=info;
p->berikut=NULL;
}else{
q=p;
while(q->berikut != NULL)
q=q->berikut;

t=new linklist;
t->data=info;
t->berikut=NULL;
q->berikut=t;
}
}

void linklist::tambahdepan(int nilai){
linklist *q;

q = new linklist;
q->data = nilai;
q->berikut = p;
p = q;
}

void linklist::tambahbelakang(int nilai){
linklist *q,*t;

if( p == NULL )
{
p = new linklist;
p->data = nilai;
p->berikut = NULL;
}
else
{
q = p;
while( q->berikut != NULL )
q = q->berikut;

t = new linklist;
t->data = nilai;
t->berikut = NULL;
q->berikut = t;
}
}

void linklist::tampil(){
linklist *i;
for(i=p;i!=NULL;i=i->berikut){
cout<data<<" "<<"-> ";
}cout<<" NULL\n"; } void linklist::hapus(int target){ linklist *q,*r; q=p; if(q->data==target){
p=q->berikut;
delete q;
return;
}
r=q;
while(q!=NULL){
if(q->data==target){
r->berikut=q->berikut;
delete q;
return;
}
r=q;
q=q->berikut;
}
cout<<"\nElemen "<<<" tidak ada.\n"; } void linklist::sisip(int posisi,int nilai){ linklist *q,*t; int i; for(i=1,q=p;i<=posisi-1;i++){ q=q->berikut;
if(q==NULL){
cout<<"\nElemen lebih kecil dari "<<<"\n "; return; } } t=new linklist; t->data=nilai;
t->berikut=q->berikut;
q->berikut=t;
}

int main(int argc, char *argv[])
{
linklist post;
cout << "isi data"<
post.tambah(9);
post.tambah(7);
post.tambah(2);
post.tambah(6);
post.tambah(13);
post.tambah(19);
post.tambah(1);
post.tambah(17);
post.tambah(15);
post.tambah(11);
post.tambah(5);
post.tambah(31);
post.tampil();

cout << "hapus data 13"<
post.hapus(13);
post.tampil();
cout << "\nhapus data 11"<
post.hapus(11);
post.tampil();
cout << "\nhapus data 2"<
post.hapus(2);
post.tampil();
cout << "\nhapus data 19"<
post.hapus(19);
post.tampil();
cout << "\nsisip data 99 pada posisi ke 5"<
post.sisip(4,99);
post.tampil();
cout << "\nsisip data 35 pada posisi ke 3"<
post.sisip(2,35);
post.tampil();
cout << "\nsisip data 73 pada posisi ke 7"<
post.sisip(6,73);
post.tampil();
cout << "\ntambah data 23 di depan"<
post.tambahdepan(23);
post.tampil();

cout << "\ntambah data 89 di belakang"<
post.tambahbelakang(89);
post.tampil();

system("PAUSE");
return EXIT_SUCCESS;
}

Tidak ada komentar:

Posting Komentar