Lompat ke konten Lompat ke sidebar Lompat ke footer

Kondisi Linked List dengan Pointer C/C++ (STRUKTUR DATA)

Linked List, atau SENARAI BERKAIT Merupakan sejumlah node yang dihubungkan secara linier dengan bantuanpointer. Suatu senarai berkait (linked list) adalah suatu simpul (node) yang dikaitkan dengan simpul yang lain dalam suatu urutan tertentu. Suatu simpul dapat
berbentuk suatu struktur atau class. Simpul harus mempunyai satu atau lebih elemen struktur atau class yang berisi data.
Ciri khas suatu node dalam linked list adalah harus selalu terdapat field, paling sedikit dua bagian, yaitu :
1) Data (info).
2) Pointer (next).
Yang Sebelumnya telah kita bahas Progam Linked List dengan Pointer C/C++ (STRUKTUR DATA) yang berisi simpul simpul yang saling terkait. Pada kesempatan kali ini akan kita lanjutkan ke tingkatan yang lebih tinggi yaitu dengan tambahan hapus node dengan membalikkan urutan dan kondisi dari Linked list. Berikut ini implementasi soalnya;
Linked List dengan Pointer, coba anda perbaiki
sehingga akan menghasilkan output sebagai berikut.
List Mula-mula :
5 20 25 50 70 100
Hapus node 50
Kondisi List Setelah dihapus, dibaca dari belakang :
100 70 25 20 5

Script Kondisi Linked List dengan Pointer C/C++ (STRUKTUR DATA)
#include <iostream.h>
#include <malloc.h> /*mengatur alokasi memory*/
#include <conio.h>
#define true 1
#define false 0
typedef int S152;
typedef struct U152 *G152;
struct U152
{
S152 info;
G152 next;
};
G152 awal,akhir;
void buatlistbaru();
void sisipnode(S152 IB);
void hapusnode(S152 IH);
void bacamaju();
void bacamundur();
int E152();
int main()
{
cout << "****************************************************\n";
cout << "iswanto - 14121110152 \n";
cout << "****************************************************\n";
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 << "\nKodisi List setelah di hapus, dibaca dari belakang :\n\n";
hapusnode(50);
bacamundur();
getch();
cout << "******************************************\n";
return 0;
}
void buatlistbaru()
{
G152 list;
list=NULL;
awal=list;
akhir=list;
}
int E152()
{
if(awal==NULL)
return(true);
else
return(false);
}
void sisipnode(S152 IB)
{
G152 NB, bantu;
NB=(U152 *) malloc(sizeof(U152));
NB->info=IB;
NB->next=NULL;
if (E152())
{ awal=NB;
akhir=NB; }
else if (IB <= awal->info) // Sisip di depan
{ NB->next=awal;
awal=NB; }
else
{ bantu=awal;
while (bantu->next!=NULL && IB > bantu->next->info)
bantu=bantu->next;
NB->next=bantu->next; // Sisip di tengah atau di belakang
bantu->next=NB;
if (IB>akhir->info)
akhir=NB;
}
}
void hapusnode(S152 IH)
{ G152 hapus, bantu;
if (E152())
cout << "List masih kosong";
else if (awal->info==IH)
{ hapus=awal; // Hapus di 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) // Hapus di akhir
{ akhir=bantu;
akhir->next=NULL; }
else
bantu->next=hapus->next; // Hapus di tengah
free(hapus);
}
else
cout << "Node tidak ditemukan!\n"; }
}
void bacamaju()
{
G152 bantu;
bantu=awal;
while (bantu!=NULL)
{ cout << " " << bantu->info;
cout << " ";
bantu=bantu->next;
}
}
void bacamundur()
{ G152 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 << " " << bantu->info;
cout << " ";
bantu=bantu->next; }
}

Output Kondisi Linked List dengan Pointer C/C++ (STRUKTUR DATA)
 atau SENARAI BERKAIT Merupakan sejumlah node yang dihubungkan secara linier dengan bantua Kondisi Linked List dengan Pointer C/C++ (STRUKTUR DATA)

Posting Komentar untuk "Kondisi Linked List dengan Pointer C/C++ (STRUKTUR DATA)"