Linked List 20:42 cha 0 Hallo Semua! kembali lagi dengan chaca!! Ada yang berbeda dari postingan sebelum-sebelumnya karena postingan kali ini spesial dan sangat berguna sebagai pemenuhan tugas GLSC untuk mata kuliah Data Struct. Berikut ini adalah hal-hal yang saya ketahui tentang data struct/Struktur data!selamat membaca! Apa sih itu Linked List? sederhananya adalah sebuah struktur data yang sangat dinamis di mana elemen dapat ditambahkan atau dihapus dari mana saja sesuka hati kita, Juga, setiap elemennya disebut node atau koleksi linear dari data dimana setiap node menunjuk pada node lain melalui pointer. Pada semester sebelumnya, kita sudah belajar tentang pointer bukan? Tentunya teman-teman harus masih inget dong. Nah, Pada linked list terdapat beberapa jenis tuh . kali ini spesial banget aku bakalan bahas tiga hal dibawah ini yaitu : 1.Circular Single Linked List 2.Doubly Linked List 3.Circular Doubly Linked List mari kita bahas satu persatu! 1. Circular single linked list Q : apa sih itu circular single linked list? A: Dari kata circular sebenarnya bisa langsung kita tahu bhwa linked list yang satu ini membentuk sebuah siklus nih. Artinya, simpul di awal dan akhirnya bersebelahan atau ismpul terakhir berisi pointer ke simpul pertama. Di linked list yang satu ini juga Tidak ada penyimpanan nilai NULL dalam list. sumber :https://www.javatpoint.com/circular-singly-linked-list Dalam linked list ini kan sudah disebutkan tuh bisa ngapain aja, bisa nambahin atau menghapus. Nah aku bakalan sebutin apa aja yang bisa dilakuin sama linked list satu ini: Menambahkan diawalyaitu Menambahkan simpul ke circular singly linked list yang ditautkan sendiri di awal. Menambahkan diakhirMenambahkan node ke circular singly linked listyang ditaukan di akhir Penghapusan di awal. Menghapus simpul dari circular singly linked list yang ditautkan di awal. Penghapusan di bagian akhir Menghapus simpul dari daftar tertaut tunggal melingkar di bagian akhir. Pencarian Membandingkan setiap elemen dari simpul dengan item yang diberikan dan kembalikan lokasi di mana item tersebut ada dalam daftar jika tidak mengembalikan null. Traversing Mengunjungi setiap elemen daftar setidaknya satu kali untuk melakukan beberapa operasi tertentu. berikut source code contoh dari circular singly linked list : #include<stdio.h> #include<stdlib.h> struct node { int data; struct node *next; }; struct node *head; void beginsert (); void lastinsert (); void randominsert(); void begin_delete(); void last_delete(); void random_delete(); void display(); void search(); void main () { int choice =0; while(choice != 7) { printf("\n*********Main Menu*********\n"); printf("\nChoose one option from the following list ...\n"); printf("\n===============================================\n"); printf("\n1.Insert in begining\n2.Insert at last\n3.Delete from Beginning\n4.Delete from last\n5.Search for an element\n6.Show\n7.Exit\n"); printf("\nEnter your choice?\n"); scanf("\n%d",&choice); switch(choice) { case 1: beginsert(); break; case 2: lastinsert(); break; case 3: begin_delete(); break; case 4: last_delete(); break; case 5: search(); break; case 6: display(); break; case 7: exit(0); break; default: printf("Please enter valid choice.."); } } } void beginsert() { struct node *ptr,*temp; int item; ptr = (struct node *)malloc(sizeof(struct node)); if(ptr == NULL) { printf("\nOVERFLOW"); } else { printf("\nEnter the node data?"); scanf("%d",&item); ptr -> data = item; if(head == NULL) { head = ptr; ptr -> next = head; } else { temp = head; while(temp->next != head) temp = temp->next; ptr->next = head; temp -> next = ptr; head = ptr; } printf("\nnode inserted\n"); } } void lastinsert() { struct node *ptr,*temp; int item; ptr = (struct node *)malloc(sizeof(struct node)); if(ptr == NULL) { printf("\nOVERFLOW\n"); } else { printf("\nEnter Data?"); scanf("%d",&item); ptr->data = item; if(head == NULL) { head = ptr; ptr -> next = head; } else { temp = head; while(temp -> next != head) { temp = temp -> next; } temp -> next = ptr; ptr -> next = head; } printf("\nnode inserted\n"); } } void begin_delete() { struct node *ptr; if(head == NULL) { printf("\nUNDERFLOW"); } else if(head->next == head) { head = NULL; free(head); printf("\nnode deleted\n"); } else { ptr = head; while(ptr -> next != head) ptr = ptr -> next; ptr->next = head->next; free(head); head = ptr->next; printf("\nnode deleted\n"); } } void last_delete() { struct node *ptr, *preptr; if(head==NULL) { printf("\nUNDERFLOW"); } else if (head ->next == head) { head = NULL; free(head); printf("\nnode deleted\n"); } else { ptr = head; while(ptr ->next != head) { preptr=ptr; ptr = ptr->next; } preptr->next = ptr -> next; free(ptr); printf("\nnode deleted\n"); } } void search() { struct node *ptr; int item,i=0,flag=1; ptr = head; if(ptr == NULL) { printf("\nEmpty List\n"); } else { printf("\nEnter item which you want to search?\n"); scanf("%d",&item); if(head ->data == item) { printf("item found at location %d",i+1); flag=0; } else { while (ptr->next != head) { if(ptr->data == item) { printf("item found at location %d ",i+1); flag=0; break; } else { flag=1; } i++; ptr = ptr -> next; } } if(flag != 0) { printf("Item not found\n"); } } } void display() { struct node *ptr; ptr=head; if(head == NULL) { printf("\nnothing to print"); } else { printf("\n printing values ... \n"); while(ptr -> next != head) { printf("%d\n", ptr -> data); ptr = ptr -> next; } printf("%d\n", ptr -> data); } } //sumber : javapoint.com SOCS Linked List Hallo Semua! kembali lagi dengan chaca!! Ada yang berbeda dari postingan sebelum-sebelumnya karena postingan kali ini spesial dan sangat... Baca selengkapnya »