You are on page 1of 2

#include <stdio.

h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
struct simpul //defenisi struktur simpul
{ int nim;
char nama[10];
struct simpul *link_kiri;
struct simpul *link_kanan;
};
struct simpul *ptr_kepala, *ptr_bantuan; //deklarasi ptr_kepala dan ptr_ban
tuan secara global
int bentuk_simpul_kepala() //inisialisasi simpul kepala;
{
ptr_kepala = (struct simpul*) malloc(sizeof(struct simpul));
ptr_kepala->link_kiri = NULL;
ptr_kepala->link_kanan = NULL;
}

/*blok funsi membentuk double list berkepala */


int bentuk_list()
{ char jwb;
struct simpul *ptr_baru; //deklarasi ptr_baru dan ptr_bantuan secara lokal
bentuk_simpul_kepala(); //pembentukan simpul kepala
ptr_bantuan = ptr_kepala;
printf("Bentuk linked list dulu ..!!! \n");
do
{
ptr_baru = (struct simpul*) malloc(sizeof(struct simpul));
if(ptr_baru) //periksa apakah alokasi memori berhasil
{
printf("\n\n");
printf("Input NIM : "); scanf("%d", &ptr_baru->nim);
printf("Input Nama : "); scanf("%s", &ptr_baru->nama);
ptr_baru->link_kiri = ptr_bantuan;
ptr_bantuan->link_kanan = ptr_baru;
ptr_bantuan = ptr_baru;

printf("Mau input data lagi? [Y/N] : "); jwb = getch();


}
else
{
printf("Memori tidak cukup \n");
break;
}
}
while(toupper(jwb) == 'Y');
ptr_baru->link_kanan = NULL; //memberi nilai NULL pada link kanan simpul t
erakhir
}
/*blok fungsi menambah simpul baru yg ditempatkan sesudah simpul kepala*/
int sisip_depan()
{ char jwb;
struct simpul *ptr_baru; //deklarasi ptr_baru secara lokal
printf("\nMenambah simpul baru setelah simpul kepala :\n");
do
{
ptr_baru = (struct simpul*) malloc(sizeof(struct simpul)); //bentuk s
impul baru
if(ptr_baru) //periksa apakah alokasi memori berhasil
{
printf("\n\n");
printf("Input NIM : "); scanf("%d", &ptr_baru->nim); //isikan
data di simpul baru
printf("Input Nama : "); scanf("%s", &ptr_baru->nama);
//proses mengkaitkan simpul baru
ptr_baru->link_kanan = ptr_kepala->link_kanan;
ptr_baru->link_kiri = ptr_kepala;
ptr_kepala->link_kanan->link_kiri = ptr_baru;
ptr_kepala->link_kanan = ptr_baru;
printf("Mau input data lagi? [Y/N] : "); jwb = getch();
}
else
{
printf("Memori tidak cukup \n");
break;
}
}
while(toupper(jwb) == 'Y');
}

/*blok fungsi menampilkan double linked list*/


int tampilkan()
{ struct simpul *ptr_sementara; //dekalrasi ptr_sementara secara lokal
printf("\n\nDaftar Mahasiswa sekarang : \n");
ptr_sementara = ptr_kepala->link_kanan;
while(ptr_sementara != NULL) //ulang selama ptr_sementara->link_kana
n bkn NULL
{
printf("%d %s \n", ptr_sementara->nim, ptr_sementara->nama); //t
ampilkan isi simpul
ptr_sementara = ptr_sementara->link_kanan; // geser ptr_sementara ke s
impul berikutnya
}
printf("\nPress any key to continue ...\n");
getch();
}
/*blok fungsi utama*/
int main()
{
bentuk_list();
tampilkan();
sisip_depan();
tampilkan();
}

You might also like