Saya mencoba untuk membuat Program C tentang Linked List seperti di bawah ini:
//Nama : Muhammad Dahlan
//Nim : 10651035
//Prodi : TIF(K)
#include<stdio.h>
#include<stdlib.h>
struct tnode {
int info;
struct tnode *next;
struct tnode *prev;
};
struct tnode *head=NULL;
void tambah_depan()
{
int q;
struct tnode *node_baru;
node_baru=malloc(sizeof(struct tnode));
printf("\n-> Silahkan Masukkan Data :");scanf("%d",&q);
node_baru->info=q;
node_baru->next=NULL;
node_baru->prev=NULL;
if(head==NULL)
{
head=node_baru;
head->next=NULL;
head->prev=NULL;
}
else
{
node_baru->next=head;
head->prev=node_baru;
head=node_baru;
}
printf("Data %d Berhasil Masuk Di Depan...!!\n",q);
}
void hapus_depan()
{
struct tnode *bantu;
int x;
if(head==NULL)
{
printf("LInk List Kosong...!!\n");
}
else
{
bantu=head;
if(head->next!=NULL)
{
x=bantu->info;
head=head->next;
head->prev=NULL;
free(bantu);
}
else
{
x=bantu->info;
head=NULL;
}
printf("Data %d Berhasil Di Hapus...!!\n",x);
}
}
void tambah_belakang()
{
int q;
struct tnode *baru,*bantu;
baru=malloc(sizeof(struct tnode));
printf("\n-> Silahkan Masukkan Data :");scanf("%d",&q);
baru->info=q;
baru->next=NULL;
baru->prev=NULL;
if(head==NULL)
{
head=baru;
head->next=NULL;
head->prev=NULL;
}
else
{
bantu=head;
while(bantu->next!=NULL)
{
bantu=bantu->next;
}
bantu->next=baru;
baru->prev=bantu;
}
printf("Data %d Berhasil Ditambah Di Belakang...!!\n",q);
}
void hapus_belakang()
{
struct tnode *bantu;
int x;
if(head!=NULL)
{
bantu=head;
if(head->next!=NULL)
{
while(bantu->next!=NULL)
{
bantu=bantu->next;
}
x=bantu->info;
bantu->prev->next=NULL;
free(bantu);
}
else
{
x=bantu->info;
head=NULL;
}
printf("Data %d Terhapus Dibelakang...!!\n",x);
}
else
{
printf("Link List Kosong...!!\n");
}
}
void tambah_tengah()
{
int q,posisi;
struct tnode *baru,*bantu;
int n=1;
baru=malloc(sizeof(struct tnode));
printf("\n-> Silahkan Masukkan Data :");scanf("%d",&q);
printf("\n-> Silahkan Pilih Posisi :");scanf("%d",&posisi);
baru->info=q;
baru->next=NULL;
baru->prev=NULL;
bantu=head;
while(n<(posisi-1))
{
bantu=bantu->next;
n++;
}
baru->next=bantu->next;
baru->prev=bantu->prev;
bantu->next=baru;
bantu->prev=baru;
printf("Data %d Berhasil di tambah Di Posisi %d...!!\n",q,posisi);
}
void hapus_tengah()
{
int posisi;
struct tnode *bantu,*bantu2;
int n=1;
printf("\n->Silahkan Pilih Posisi :");scanf("%d",&posisi);
bantu=head;
while(n<(posisi-1))
{
bantu=bantu->next;
n++;
}
bantu2=bantu->next;
bantu->next=bantu2->next;
bantu2=bantu->prev;
bantu->prev=bantu2->prev;
free(bantu2);
printf("Berhasil Di Hapus Di Posisi %d ...!\n",posisi);
}
void hapus_semua()
{
struct tnode *bantu,*hapus;
bantu=head;
while(bantu!=NULL)
{
hapus=bantu;
bantu=bantu->next;
free(hapus);
}
head=NULL;
printf("Link List Terhapus Semua...!!\n");
}
void tampil_node()
{
struct tnode *bantu;
if(head==NULL)
{
printf("Link List Kosong...!!\n");
}
else
{
bantu=head;
while(bantu!=NULL)
{
printf("%d ->",bantu->info);
bantu=bantu->next;
}
printf("NULL\n");
}
}
main()
{
int p,q;
char x;
printf("\n\t\t\tM.DAHLAN BELAJAR C PAKEK LINK LIST\n");
printf("\t\t===================================================\n");
printf("\n\t==>MENU TAMBAH YANG TERSEDIA :\n");
printf("\n=>1. Tambah Depan."); printf("\t\t=>5. Hapus Depan.\n");
printf("\n=>2. Tambah Belakang."); printf("\t\t=>6. Hapus Belakang.\n");
printf("\n=>3. Tambah Tengah (sisip) ");printf("\t=>7. Hapus Tengah (sisip).\n");
printf("\n=>4. Tampil Node."); printf("\t\t=>8. Hapus Semua Node.\n");
p='y';
while(p=='y' || p=='Y')
{
printf("\n\nMasukkan Pilihan : ");scanf("%d",&p);
switch(p)
{
case 1: tambah_depan();
break;
case 2: tambah_belakang();
break;
case 3: tambah_tengah();
break;
case 4: tampil_node();
break;
case 5: hapus_depan();
break;
case 6: hapus_belakang();
break;
case 7: hapus_tengah();
break;
case 8: hapus_semua();
break;
default :printf("Eiiit..!!! Ma'af Pilihan Hanya Tersedia Delapan[8]...!!\n",p);
printf("=========================================\n");
}
printf("\n\n==>Ulang Lagi..??(y/n): ");
p=getche();
}
}
Program Linked List
Langganan:
Posting Komentar (Atom)
0 komentar:
Posting Komentar