0% menganggap dokumen ini bermanfaat (0 suara)
179 tayangan12 halaman

Praktikum Double Linked List C Programming

Laporan ini membahas implementasi operasi dasar double linked list meliputi penyisipan, penghapusan, pencarian, dan penampilan data. Source code mendemonstrasikan menu pilihan untuk melakukan operasi-operasi tersebut pada double linked list.

Diunggah oleh

Akhmal Akbar
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
179 tayangan12 halaman

Praktikum Double Linked List C Programming

Laporan ini membahas implementasi operasi dasar double linked list meliputi penyisipan, penghapusan, pencarian, dan penampilan data. Source code mendemonstrasikan menu pilihan untuk melakukan operasi-operasi tersebut pada double linked list.

Diunggah oleh

Akhmal Akbar
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

Laporan Praktikum 7

Algoritma Dan Struktur Data


Double Linked List (1)

Dibuat Oleh :
Nama : Muhammad Akhmal Akbar Nurrizky
NRP : 3121521026
Kelas : D3 IT A PSDKU Lamongan
D. PERCOBAAN

1. Implementasikan operasi dasar Double linked list : Menyisipkan sebagai simpul ujung(awal) dari
linked list.
2. Implementasikan operasi dasar Double linked list : Membaca atau menampilkan
3. Implementasikan operasi dasar Double linked list : Mencari sebuah simpul tertentu. Tambahkan
kondisi jika yang dicari adalah data yang paling depan.
4. Implementasikan operasi dasar Double linked list : Menghapus simpul tertentu. Tambahkan
kondisi jika yang dihapus adalah data yang paling depan atau data yang paling terakhir.
5. Gabungkan semua operasi di atas dalam sebuah Menu Pilihan.
Source code :
#include <stdio.h>
#include <stdlib.h>
struct node
{
struct node *prev;
struct node *next;
int data;
};
struct node *head;
void penyisipan_awal();
void penyisipan_akhir();
void deletion_beginning();
void deletion_last();
void deletion_specified();
void display();
void search();
int main ()
{
int choice ;
while(choice != 9)
{
printf("\n***Main Menu*");
printf("\n===========================================\n");
printf("\n1.Menyisipkan diawal\n");
printf("2.Menyisipkan diakhir\n");
printf("3.Hapus awalan\n");
printf("4.Hapus akhiran\n");
printf("5.Hapus simpul setelah data yang diinputkan\n");
printf("6.Cari data\n");
printf("7.Tampilkan data\n");
printf("8.Exit\n") ;
printf("\n input pilihan ?");
scanf("%d", &choice) ;

switch(choice)
{
case 1:
penyisipan_awal();
break;
case 2:
penyisipan_akhir();
break;
case 3:
deletion_beginning();
break;
case 4:
deletion_last();
break;
case 5:
deletion_specified () ;
break;
case 6:
search();
break;
case 7:
display();
break;
case 8:
exit(0);
break;
default:
printf("Masukkan pilihan dengan benar : ");
}
}
}

void penyisipan_awal()
{
struct node *ptr;
int item;
ptr = (struct node *)malloc(sizeof(struct node));
printf("Input Data :");
scanf("%d",&item);
if(ptr->data== item)
{
printf("\n OVERFLOW");
}
else
{

if(head==NULL)
{
ptr->next = NULL;
ptr->data = item;
ptr->prev = NULL;
head=ptr;
}
else
{
ptr->data=item;
ptr->next=head;
ptr->prev=NULL;
head->prev=ptr;
head=ptr;
}
}
printf("Node telah di inputkan\n");
}

void penyisipan_akhir()
{
struct node *ptr, *temp;
int item;
ptr = (struct node *)malloc(sizeof(struct node));
if(ptr == NULL)
{
printf("\n OVERFLOW");
}
else
{
printf("\n Masukkan nilai data :");
scanf(" %d", &item);
ptr->data=item;
if(head == NULL)
{
ptr->next = NULL;
ptr->prev = NULL;
head = ptr;
}
else
{
temp = head;
while(temp->next!=NULL)
{
temp = temp->next;
}
temp->next = ptr;
ptr ->prev = temp;
ptr ->next = NULL;
}
}
printf("\n node sudah di inputkan\n");
}
void deletion_beginning()
{
struct node *ptr;
if(head == NULL)
{
printf("\n UNDERFLOW");
}
else if(head->next == NULL)
{
head = NULL;
free(head);
printf("\n node berhasil di hapus\n");
}
else
{
ptr = head;
head = head -> next;
head -> prev = NULL;
free(ptr);
printf("\n node berhasil di hapus \n");
}
}

void deletion_last ()
{
struct node *ptr;
if (head == NULL)
{
printf("\n UNDERFLOW");
}
else if (head->next == NULL)
{
head = NULL;
free (head);
printf("\n node berhasil di hapus\n");
}
else
{
ptr = head;
if (ptr->next != NULL)
{
ptr = ptr -> next;
}
ptr -> prev -> next = NULL;
free (ptr);
printf("\nnode berhasil di hapus\n");
}
}

void deletion_specified ()
{
struct node *ptr, *temp;
int val;
printf("\n Masukkan data yang akan di hapus : ");
scanf("%d", &val);
ptr = head;
while (ptr -> data != val)
ptr = ptr -> next;
if (ptr -> next == NULL)
{
printf("\n tidak dapat di hapus\n");
}
else if (ptr -> next -> next == NULL)
{
ptr ->next = NULL;
}
else
{
temp = ptr -> next;
ptr -> next = temp -> next;
temp -> next -> prev = ptr;
free(temp);
printf("\n node deleted\n");
}
}

void display()
{
struct node *ptr;
printf("\n tampilkan list : \n");
ptr = head;
while (ptr != NULL)
{
printf("%d-", ptr -> data);
ptr = ptr -> next;
}
}

void search ()
{
struct node *ptr;
int item, i=0, flag;
ptr = head;
if (ptr == NULL)
{
printf("\n List kosong\n");
}
else
{
printf("\n inputkan data yang akan dicari : \n");
scanf(" %d", &item);
while (ptr != NULL)
{
if (ptr->data == item)
{
printf("\n data yang dicari ada di dalam node %d ", i+1);
flag=0;
break;
}
else
{
flag=1;
}
i++;
ptr = ptr -> next;
}
if (flag==1)
{
printf("\nitem tidak ditemukan\n");
}
}
}
Tampilan hasil :

Anda mungkin juga menyukai