Selasa, 03 Maret 2020

Double Linked List II


Summary Double Linked List Pertemuan 2
(Tambah pop serta push Mid)

                Menurut pengertian dari materi power point binus, double linked list merupakan linked list dengan dua tautan, dimana tautan yang pertama bereferensi pada data selanjutnya sedangkan tautan selanjutnya bereferensi pada tautan sebelumnya. Pada double linked list (referensi ppt bimay) terdapat 2 fungsi, yaitu insert dan delete. Insert dan delete dapat juga kita sebut dengan istilah push dan pop, dimana push berarti insert dan pop berarti delete.Istilah tersebut juga saya dapatkan dari dosen kelas besar CA-01 yang disampaikan oleh bapak fidelson. Push dan pop sendiri masing - masing memiliki tipe yang akan saya jelaskan beserta codenya.
1)      Push
Fungsi push berfungsi untuk menambah nilai node (data) dari barisan paling awal dan akhir.
·         PushHead
Merupakan fungsi push yang bertujuan menambah data melalui barisan awal.Contoh pengimplementasian ialah sebagai berikut:
Jika kita memiliki input data yaitu 1 2 3 4, maka output yang akan dihasilkan oleh pushhead ini adalah  4 3 2 1.
Contoh code :
                void pushhead(int x){
                curr = (struct data*)malloc(sizeof(struct data));
                curr->x = x;
                if(head==NULL){
                                head = tail = curr;
                }else{
                                curr->next = head;
                                head->prev = curr;
                                head->curr;
                }
                head->prev = NULL;
                tail->next=NULL;
}
·         PushMid
Merupakan fungsi push yang bertujuan menambah data melalui barisan tengan. Contoh pengimplementasiannya ialah sebagai berikut :
                Jika kita memiliki data yaitu 1 2 3 4 5 dan kita ingin menginput nilai 3 maka outputnya adalah 1 2 3 3 4 5.
                Contoh codenya

Void PushMid(int age, char name[]){
                if(head==NULL){
                                //pushHead
                                pushHead(age,name);
                }else if(age < head->age){
                                //pushHead
                                pushHead(age,name);
                }else if(age > tail->age){
                                pushTail(age,name);
                }else{
                                current = (struct human *)malloc(sizeof human);
                                strcpy(current->name, name);
                                current->age = age;
                                current->next = current->prev = NULL;
                               
                                struct human *temp=head;
                                while(temp!=NULL && temp->age < current->age){
                                                temp=temp->next;
                                }
                                current->prev=temp->prev;
                                current->next=temp;
                                temp->prev->next=current;
                                temp->prev=current;
                }
}                             

·         PushTail
Merupakan fungsi push yang bertujuan menambah data melalui barisan akhir. Contoh pengimplementasiannya ialah sebagai berikut :
Jika kita memiliki input data 1 2 3 4, maka output yang akan dihasilkan oleh pushtail adalah 1 2 3 4.
Contoh code :
                void pushhead(int x){
                curr = (struct data*)malloc(sizeof(struct data));
                curr->x = x;
                if(head==NULL){
                                head = tail = curr;
                }else{
                                curr->prev = tail;
                                tail->prev = curr;
                                tail->curr;
                }
                head->prev = NULL;
                tail->next=NULL;
}
2)      Pop
Fungsi pop merupakan kebalikan dari fungsi push yang dimana fungsi ini bertujuan untuk menghapus suatu nilai atau data. Pop memiliki 3 tipe yaitu Pophead dan Poptail.
·         PopHead
Merupakan fungsi yang dimana fungsi tersebut akan menghapus suatu nilai atau data melalui barisan paling depan.
Contoh Code:
                void pophead(){
                                If(head!==NULL){
                                                If(head==tail){
                                                                free(head);
                                                                head=NULL;
                                                }else{
                                                                curr = head;
                                                                head = head -> next;
                                                                free(curr);
                                                                head->prev = NULL;
                                }
                }
}
·         PopMid
Merupakan fungsi pop yang dimana berfungsi untuk menghapus suatu nilai data melalui tengah.
Berikut contoh codenya :

void popMid(int age){
                int temu=0;
                if(head==NULL){
                                printf("No Data\n");
                }else{
                                current=head;
                                while(current!=NULL){
                                                if(current->age==age){
                                                                temu=1;
                                                                break;
                                                }
                                                current=current->next;
                                }
                                if(temu==1){
                                                if(current==head){
                                                popHead();
                                                }else if(current==tail){
                                                popTail();
                                                }else{
                                                current->prev->next=current->next;
                                                current->next->prev=current->prev;
                                                                free(current);
                                                }
                                }else{
                                                printf("Data Not Found\n");
                                }
                }
}

                                                               
·         Poptail
Merupakan fungsi pop yang dimana fungsi tersebut akan menghapus suatu nilai atau data dari barisan yang paling belakang.
Contoh code:
                void pophead(){
                                If(head!==NULL){
                                                If(head==tail){
                                                                free(head);
                                                                head=NULL;
                                                }else{
                                                                curr = tail->prev;
                                                                free(tail);
                                                                tail = curr;
                                                                tail->next = NULL;
                                }
                }
}
Stack(tumpukan) sendiri merupakan fungsi yang penting dalam penggunaan data struktur yang berfungsi untuk menyimpan elemen secara teratur dengan konsep LIFO(Last In First Out). Sedangkan Queue adalah prinsip antrian yang sama seperti stack namun memiliki konsep yang berbeda yaitu FIFO(First In First Out).


                Demikian review pertemuan yang dapat saya buat, Terima kasih.



Referensi :
Ø  Materi Binus Maya

Tidak ada komentar:

Posting Komentar