Double Linked List dalam Bahasa C STRUKTUR DATA
#include <stdio.h>
#include <stdlib.h>
/*
Johannes Alexander Putra
*/
typedef struct element
{
int angka;
struct element * prev;
struct element * next;
}element;
element * buatbarula(int angka)
{
element * buatbaru = NULL;
buatbaru = (element *)malloc(sizeof(element));
buatbaru->angka = angka;
buatbaru->prev = NULL;
buatbaru->next = NULL;
}
void adddepan(int angka,element ** listaku)
{
element * buat = buatbarula(angka);
buat->next = (*listaku);
(*listaku)->prev = buat;
(*listaku) = buat;
buat = NULL;
}
void addtengah(int angka,element * listaku)
{
element * buat = buatbarula(angka);
element * temp = NULL;
temp = listaku;
listaku = buat;
while(temp->angka != 5)
{
temp = temp->next;
}
buat->prev = temp->prev;
buat->next = temp;
temp->prev->next = buat;
temp->prev = buat;
temp = NULL;
}
void akhir(int angka,element * listaku)
{
element * buat = buatbarula(angka);
element * temp = NULL;
temp = listaku;
while(temp->next != NULL)
{
temp = temp->next;
}
temp->next = buat;
buat->prev = temp;
temp = NULL;
}
void printsemua(element * listaku)
{
element * temp = listaku;
do
{
printf("%d",temp->angka);
temp = temp->next;
}while(temp != NULL);
}
void deldepan(element ** listaku)
{
if(listaku !=NULL)
{
element * hapus = (*listaku);
(*listaku) = hapus->next;
(*listaku)->prev = hapus;
hapus->next = NULL;
}
else{
printf("error");
}
}
void deltengah(element * listaku)
{
element * hapus;
hapus = listaku;
while(hapus->angka !=3)
{
hapus = hapus->next;
}
hapus->prev->next = hapus->next;
free(hapus);
}
void delbelakang(element * listaku)
{
element * hapus;
hapus = listaku;
while(hapus->next !=NULL)
{
hapus = hapus->next;
}
hapus->prev->next = NULL;
free(hapus);
}
int main()
{
element * tes = buatbarula(4);
adddepan(1,&tes);
akhir(5,tes);
addtengah(3,tes);
deldepan(&tes);
delbelakang(tes);
deltengah(tes);
printsemua(tes);
}
Komentar
Posting Komentar