Showing posts with label LAPORAN PRAKTIKUM. Show all posts
Showing posts with label LAPORAN PRAKTIKUM. Show all posts

Friday, August 18, 2023

[Praktikum Algoritma dan Struktur Data] Modul III - Sorting


MODUL  III

SORTING


3.1. TUJUAN

1. Mahasiswa dapat memahami algoritma sorting.

2. Mahasiswa dapat mengimplementasikan metode sorting dalam program.


3.2. DASAR TEORI

1. Pengertian Sorting

Sorting adalah suatu proses pengurutan data yang sebelumnya disusun secara acak atau tidak teratur menjadi urut atau teratur menurut suatu aturan tertentu. Pengurutan dapat dilakukan secara ascending (urut naik) maupun descending (urut turun).

2. Jenis-jenis sorting 

a. Bubble Sort

Bubble sort adalah suatu metode pengurutan yang membandingkan elemen sekarang dengan elemen berikutnya.

Algoritma :

1) Tentukan data-data yang akan diurutan dan disimpan dalam array.

2) Lakukan pengulangan dari data-data tersebut.

3) Lakukan pembandingan antara data yang satu dengan data yang lainnya, dimana kalau data yang satu lebih kecil dari data yang lain, maka posisinya ditukar. Kalau tidak, cek data selanjutnya.

4) Ulangi langkah 3, sampai semua data terurut.

5) Tampilkan data hasil pembandingan.

b. Straight Selection Sort

Selection sort adalah suatu metode pengurutan yang membandingkan elemen sekarang dengan elemen berikutnya sampai yang terakhir. Jika ditemukan elemen yang lebih kecil dari elemen yang sekarang maka dicatat posisinya dan langsung ditukar.

Algoritma :

1) Tentukan data-data yang akan diurutkan dan simpan dalam array.

2) Lakukan pengulangan dari data-data tersebut.

3) Seleksi data, cek apakah hasil seleksi data  yang  ditampung lebih besar dari data.

4) Jika pengecekan langkah 3 bernilai “true” lakukan pertukaran      posisi antara data yang ditampung dengan data terkecil.

5) Ulangi langkah 3 sampai 4, hingga nilai i sama dengan n.

c. Insertion Sort 

Insertion sort adalah sebuah algoritma pengurutan yang membandingkan dua elemen data pertama, mengurutkannya, kemudian mengecek elemen data berikutnya satu persatu dan membandingkannya dengan elemen data yang telah diurutkan. Cara pengurutannya dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan ditempatkan diposisi yang seharusnya. 

Algoritma :

1) Ambil satu data ke-i simpan di temp. Bandingkan data temp dengan data yang ada disebelah kiri satu per-satu 

2) Cek apakah data temp lebih kecil dari data sebelah kiri. 

3) Jika langkah nomor 3 bernilai “true” lakukan pergeseran data satu-persatu kemudian pada posisi yang tepat sisipkan data temp. 

4) Ulangi langkah 1 sampai 4, hingga i sama dengan n. 

d. Merge Sort 

Merge sort adalah pengurutan yang dilakukan dengan teknik merge (menggabungkan) dua buah array kedalam sebuah array yang baru. Algoritma merge sort membagi tabel menjadi dua tabel yang sama besar. Masing-masing tabel diurutkan secara rekursif, dan kemudian digabungkan kembali untuk membentuk tabel yang terurut. Implementasi dasar dari algoritma merge sort memakai tiga buah tabel, dua untuk menyimpan elemen dari tabel yang telah di bagi dua dan satu untuk menyimpan elemen yang telah terurut.

Algoritma : 

1. Tentukan data – data yang akan diurutkan dan disimpan dalam array.

2. Lakukan pengulangan dari data – data tersebut.

3. Data – data yang ada dibagi menjadi 2 bagian dimana bagian pertama merupakan setengah (jika data genap) atau setengah minus satu (jika data ganjil) dari seluruh data.

4. Lakukan pemecahan kembali untuk masing-masing blok sampai hanya terdiri dari satu data tiap blok. 

5. Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah data pertama lebih besar dari pada data ke-1, jika ya maka data ke-1 dipindah sebagai data pertama, kemudian data ke-pertama sampai ke-tengah digeser menjadi data ke-dua sampai ke-1. Data dibandingkan seterusnya sampai menjadi satu blok utuh seperti awalnya.

6. Tampilkan data hasil pembandingan.


3.3. PERMASALAHAN

Membuat program menggunakan double linked list dengan bubble sort, straight selection sort, insertion sort dan merge sort. 


3.4. HASIL DAN PEMBAHASAN

1. Algoritma 

a. Tambah data :

1) Membuat sebuah node baru bernama x.

2) Jika head sama dengan NULL, maka node baru dijadikan head dan tail.

3) Jika tidak, pointer before node baru tersebut dihubungkan dengan tail, pointer next tail dihubungkan dengan node baru dan kemudian tail dipindahkan ke node baru.

4) Setiap data ditambah, ukuran linked list juga ditambah, dan jika data dikurang, ukuran linked list dikurang.

b. Bubble sorting:

1) Memposisikan node sementara bernama tmp1 ke head.

2) Melakukan perbandingan antara isi data node tmp1 dengan node selanjutnya yang diberinama tmp2. Jika data dalam node tmp1 lebih besar dari data di node tmp2, tukar data dalam ke dua node tersebut. Jika tidak, geser posisi tmp2 kekanan.

3) Menggeser posisi tmp1 kekanan.

4) Mencetak proses pengurutan data-data dalam node.

5) Mengulangi langkah 1 sampai 4 sampai semua data terurut dengan benar.

c. Insertion Sorting :

1) Memposisikan node sementara bernama tmp1 ke head dan tmp2 ke data yang berada diposisi kedua.

2) Melakukan perbandingan antara isi data node tmp2 dengan isi data node tmp1. Jika data dalam node tmp2 lebih kecil dari data di node tmp1, tukar data dalam ke dua node tersebut. Jika tidak, geser posisi tmp2 kekanan.

3) Mencetak proses pengurutan data-data dalam node.

4) Mengulangi langkah 1 sampai 3 hingga semua data terurut dengan benar.

d. Cetak :

a) Memposisikan node sementara bernama tmp ke head.

b) Melakukan perulangan pada node tmp sampai nilai tmp sama dengan NULL.

c) Mencetak data yang ada dalam node tmp.

2. Source code


3. Hasil run program
Gambar 3.1 Tampilan fungsi addfront

Gambar 3.2 Tampilan fungsi bubblesort

Gambar 3.3 Tampilan fungsi insertion

3.5. ANALISA 

“void insertion()” merupakan sebuah fungsi untuk mengurutkan data dengan metode insertion sort.
“node *i”, “node *j” dan “node *tmp2” merupakan pendeklarasian variabel I, j dan tmp2.
“node *tmp1=head”, mendeklarasikan variabel “tmp1” berada pada “head”.
“for(i=tmp1->next;i!=NULL;i=i->next)” merupakan perulangan untuk mengecek data sampai data terakhir.
“tmp2->data=i->data” mendeklarasikan nilai “tmp2” sama dengan “i”.
“for(j=i->before;j!=NULL;j=j->before)” merupakan perulangan untuk kembali mengecek data dari belakang.
Dibuatkan sebuah kondisi “if(tmp2->data > j->data)”, jika nilai pada “tmp2” lebih besar dari nilai “j”, maka akan menjalankan statement “j->next->data=j->data”, yaitu nilai di list setelah “j” akan berpindah menjadi “j”.
Setelah itu “j->data=tmp2->data”, nilai yang ada pada “j” tadi akan berpindah pada variabel “tmp”, maka data akan tertukar.   
“cetak()”, digunakan dalam fungsi untuk memangil fungsi cetak dengan menampilkan step by step dari penukaran data.


“void bubblesort()” merupakan fungsi untuk mengurutkan data dengan cara membandingkan data satu per satu.
“for (int i = 0; i<size+1 ; i++)” merupakan perulangan untuk mengecek jumlah datanya.
“node *tmp = head”, yaitu menempatkan variabel “tmp” pada “head”.
“for ( int j = 0; j < size-1; j++)”, merupakan perulangan yang akan mengecek data dari akhir setelah dilakukan perulangan sebelumnya.
“if(tmp->data > tmp->next->data)”, jika nilai “tmp” lebih besar dari setelahnya, maka “tmp2 =tmp->data”, yaitu nilai “tmp2”-nya sama dengan “tmp”.
“tmp->data=tmp->next->data”, nilai “tmp” sama dengan nilai setelahnya.
“tmp->next->data=tmp2”, nilai data setelah “tmp” akan bertukar tempat dengan “tmp2”.
“tmp=tmp->next”, merupakan statement yang dijalankan apabila kondisinya tidak terpenuhi.


“void cetak()” merupakan sebuah fungsi untuk menampilkan hasil program dengan mendeklarasikan variabel “tmp” berada pada “head”.
Jika node-nya kosong maka akan dicetak "data kosong", namun jika tidak maka, dibuatkan sebuah perulangan untuk untuk menampilkan data yang telah diurutkan.


Script tersebut merupakan fungsi utama yang akan digunakan untuk melakukan pemanggilan fungsi-fungsi yang telah dibuat dengan menggunakan switch case untuk mempermudah dalam pemilihan program pengurutan yang ingin dipilih.


3.6. KESIMPULAN
1. Sorting merupakan kegiatan mengurutkan data baik dari yang terkecil ke terbesar (ascending) maupun dari yang terbesar ke terkecil (descending). Cara pengurutannya atau algoritmanya disesuaikan dengan jenis sorting yang digunakan. 
2. Sorting terdiri dari beberapa jenis, diantaranya bubble sort, straight selection sort, insertion sort dan merge sort. Dalam pengaplikasiannya didalam program, dapat dipilih metode mana yang tepat untuk digunakan dalam sebuah program. 










Continue Reading
No comments
Share:

Saturday, June 27, 2020

[Praktikum Algoritma dan Struktur Data] Modul II - Double Linked List


MODUL  II

DOUBLE LINKED LIST

 

2.1.  TUJUAN

1.    Mahasiswa memahami dan dapat mengimplementasikan double linked list dalam program.

2.    Mahasiswa dapat membuat dan menggunakan berbagai operasi-operasi yang terdapat pada double linked list.

2.2.  DASAR TEORI

1.    Double Linked List

Double linked list adalah list biasa, hanya saja setiap elemen list-nya memuat 2 macam pointer, yang selalu menunjuk ke elemen sebelumnya dan yang lainnya ke elemen sesudahnya.

Gambar 2.1 Double linked list

Ada dua macam double linked list, yaitu :

a.    Double Linked List Circular

Circular artinya pointer next dan prev-nya menunjuk ke dirinya sendiri. Jadi, double linked list circular adalah linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu 1 field pointer yang menunjuk pointer berikutnya (next), 1 field menunjuk pointer sebelumnya (prev), serta 1 field yang berisi data dengan pointer next dan prev-nya menunjuk ke dirinya sendiri secara circular.

Deklarasi node :

Typedef struct Tnode {
  int data;
  Tnode *next;
  Tnode *prev;
};

b.    Double Linked List Non Cilcular

Non circular artinya pointer preview dan next-nya akan menunjuk pada NULL. Jadi double linked list non circular adalah double linked list yang memiliki 2 buah pointer yaitu pointer next dan prev. Pointer next menunjuk pada node setelahnya dan pointer preview menunjuk pada node sebelumnya.

Deklarasi node :

typedef struct Tnode {
  int data;
  Tnode *next;
  Tnode *prev;
};

2.    Operasi – Operasi yang Ada Pada Double Linked List

a.    Penciptaan

Penciptaan adalah memberikan nilai NULL terhadap variabel pointer awal dan variabel pointer akhir.

b.    Penyisipan

·      Penyisipan di depan atau awal

Operasi ini berguna untuk menambah satu simpul baru diposisi pertama. Langkah pertama untuk pembuatan data adalah membuat simpul baru dan mengisinya dengan data pada field  infonya. Pointer yang menunjuk pada simpul tersebut dipanggil dengan nama baru.

·      Penyisipan ditengah

Operasi penyisipan data  di tengah linked list adalah  suatu  operasi menambah data diposisi tertentu didalam linked list. Karena double linked list memiliki dua pointer sambungan, maka penyisipan bisa dilakukan sebelum data tertentu atau sesudah data tertentu, berbeda dengan single linked list yang hanya memiliki satu pointer sambungan yaitu sambungan kanan (next).

·      Penyisipan di belakang

Operasi ini berguna untuk menambahkan elemen baru di posisi akhir. Langkah pertama untuk penambahan data adalah pembuatan elemen baru dan pengisian nilai infonya. Pointer yang menunjuk ke data tersebut dipanggil dengan nama baru. Kondisi disetelah ada pembuatan elemen baru tersebut.

c.    Penghapusan

·      Penghapusan di awal, operasi iniberguna untuk menghapus data pada posisi pertama

·      Penghapusan di tengah, untuk melakukan proses penghapusan di tengah linked list.

·      Penghapusan di akhir, operasi ini berguna untuk menghapus data pada posisi terakhir.

3.    Algoritma Program dengan Double Linked List

a.    Add front :

1.    Membuat sebuah node baru berdata nilai.

2.    Jika head dan tail sama dengan NULL, maka node baru dijadikan head dan tail.

3.    Jika tidak, pointer next node baru tersebut ditujukan pada head, pointer before head dihubungkan dengan node baru dan kemudian head dipindahkan ke node baru.

4.    Setiap data ditambah, ukuran linked list juga ditambah, dan jika data dikurang, ukuran linked list dikurang.

b.    Add back :

1.    Membuat sebuah node baru berdata nilai.

2.    Menghubungkan pointer next tail dengan node baru, lalu pointer before node baru dengan tail, dan kemudian tail dipindahkan ke node baru.

c.    Insert after :

1.    Membuat sebuah node baru.

2.    Memeriksa data-data pada linked list sampai ketemu node berdata nilai dengan sebuah node sementara yang dihubungkan dengan head.

3.    Jika data sudah ditemukan, menyisipkan node baru ke bagian setelah data yang dicari, dengan cara menghubungkan pointer next node baru dengan pointer next node sementara.

4.    Mengarahkan pointer next node sementara ke node baru.

5.    Mengarahkan pointer before node baru ke node sementara.

d.   Insert before :

1.    Membuat sebuah node baru.

2.    Periksa data-data pada linked list sampai ketemu node berdata nilai dengan sebuah node sementara yang dihubungkan dengan tail.

3.    Jika data sudah ditemukan, hubungkan pointer before node baru dengan pointer before node sementara, mengarahkan pointer before node sementara ke node baru, mengarahkan pointer next node baru ke node sementara.

e.    Delete front :

1.    Menggunakan sebuah node sementara dan ditujukan pada head.

2.    Menggeser posisi head ke kanan.

3.    Memutuskan pointer next node sementara tadi dengan linked list, memutuskan pointer before head, dan menghapus node sementara.

f.     Delete back :

1.    Menggunakan sebuah node sementara dan ditujukan pada tail.

2.    Menggeser tail ke kiri.

3.    Memutuskan pointer next tail dan pointer before node sementara, lalu menghapus node sementara yang telah terpisah dari linked list.

g.    Delete all :

1.    Menghapus node dalam linked list satu persatu dari depan.

2.    Menggunakan sebuah node sementara dan ditujukan pada head.

3.    Menggeser posisi head ke kanan.

4.    Memutuskan pointer next node sementara tadi dengan linked list, memutuskan pointer before head, dan menghapus node sementara.

5.    Kembali ke langkah kedua hingga hanya tersisa head.

6.    Head terakhir kemudian dihapus sehingga data menjadi kosong.

h.    Cetak :

1.    Mengakses head dengan node sementara.

2.    Memeriksa kondisi, node sementara tidak sama dengan NULL atau tidak.

3.    Jika tidak sama, mencetak node sementara dan memindahkan node sementara tersebut ke node selanjutnya.

4.    Jika sama dengan NULL, berhenti mencetak.

 

2.3.  PERMASALAHAN

1.    Membuat program dengan double linked list berisi operasi-operasi berikut:

a.    Add front dan add back

b.    Insert after atau insert back

c.    Delete front dan delete back

d.   Delete all

2.4.  HASIL DAN PEMBAHASAN

a.     Source Code

#include <iostream>

#include <stdlib.h>

using namespace std;

 

class DLL

{

   private:

      struct node

   {

      int data;

      node *next;

      node *before;

   };

   node *head,*tail;

   int size;

   public:

   void dll()

   { head=tail=NULL;

      size=0;

      };

   void insertbefore(int a, int b)

   {

 

   node *tmp1,*tmp2;

   tmp1=tmp2=head;

 

   while(tmp1->data!=a)

      {

      tmp2=tmp1;

      tmp1=tmp1->next;

      }

      node *tmp=new node;

      tmp->data=b;

      tmp->next=tmp2->next;

      tmp->next->before=tmp;

      tmp2->next=tmp;

      tmp->before=tmp2;

      size++;

      cout<<" ";

      }

      void removeBack()

      {

      node *tmp;

      tmp=tail;

      tail=tail->before;

      tail->next=tmp->before=NULL;

      delete tmp;

      size--;

      cout<<" ";

      }

      void removeAll()

      {

      node *tmp;

      int x=size;

      for(int n=0;n<x;n++)

      {

                  if(size==1)

            {

                  tmp=head;

                  head=tail=NULL;

                  delete tmp;

                  size--;

            }

            else

            {

            tmp=head;

            head=head->next;

            head->before=NULL;

            tmp->next=NULL;

            delete tmp;

            size--;

            }

      }

}

      void insertAfter(int x,int nilai)

      {

                        node *tmp, *after;

            tmp=new node;

            tmp->data=nilai;

            after= head;

      while(after->data!=x)

      {

                  after=after->next;

      }

            tmp->next=after->next;

            after->next->before=tmp;

            tmp->before=after;

            after->next=tmp;

            size++;

      }

      void addBack (int nilai)

      {

                  node *tmp;

            tmp=new node;

            tmp->data=nilai;

         tmp->next=NULL;

            tmp->before=tail;

            tail->next=tmp;

            tail=tmp;

            size++;

         cout<<" ";

      }

      void addFront(int nilai)

   {

            node *tmp;

         tmp=new node;

            tmp->data=nilai;

            if(size==0)

            {

                  head=tail=tmp;

         }

            else

            {

                  tmp->before=NULL;

                  tmp->next=head;

                  head->before=tmp;

                  head=tmp;

            }

            size++;

      }

      void tampil()

   {

      node *tmp;

      tmp=head;

      if(size==0)

      {

            cout<<"data kosong";

      }

      else

      {

            for (int n=0;n<size;n++)

            {

                  cout<<tmp->data<<ends;

                  tmp=tmp->next;

            }

      }

   }

};

void main()

{

   DLL a;

   a.dll();

   cout<<"Membuat Fungsi addfront\n";

   a.addFront(1);

   a.addFront(2);

   a.addFront(3);

   a.addFront(4);

   a.addFront(5);

   a.addFront(6);

   a.tampil();

   cout<<endl;

   cout<<"Membuat Fungsi addback\n";

   a.addBack(7);

   a.addBack(8);

   a.tampil();

   cout<<endl;

   cout<<"Membuat Fungsi insert after\n";

   a.insertAfter(1,9);

   a.tampil();

   cout<<endl;

   cout<<"Membuat Fungsi Insert Before\n";

   a.insertbefore(3,10);

   a.tampil();

   cout<<endl;

   cout<<"Membuat Fungsi remove Back\n";

   a.removeBack();

   a.tampil();

   cout<<endl;

   cout<<"Membuat Fungsi remove All\n";

   a.removeAll();

   a.tampil();

   cout<<endl;

   system("pause");

}

 

b.    Hasil run program


Gambar 2.4 Screenshot program double linked list 

2.5.  ANALISA

void insertBefore(int x,int nilai)

   {

      tmp=new node;

      node *tmp,*before;

      tmp->data=nilai;

      before=head;

      while(before->data!=x){

      before=before->next;

·      “void insertBefore(int x,int nilai)” merupakan fungsi dengan nama “insertbefore” dengan parameterx” dannilai”. Digunakan untuk menyisipkan node baru sebelum node yang dikehendaki.

·      “node *tmp,*before”, menggunakan nama “tmp” dan “before” untuk node.

·      “tmp->data=nilai” membuat “tmp->data” sama dengan parameter “nilai”. “before=head” membuat node “before” menjadi “head”.

·      while(before->data!=x)”, jika “before->data” tidak sama dengan “x”, maka akan menjalankan statement “before=before->next”, yaitu node “before” akan tetap berpindah hingga kondisinya terpenuhi.

void removeBack(){

      node *tmp;

      tmp=tail;

      tail=tail->before;

      tail->next=tmp->before=NULL;

      delete tmp;

      size--;

·      “void removeBack()” yaitu fungsi untuk menghapus node dari belakang tanpa menggunakan parameter.

·      “tmp=tail” yaitu membuat “tmp” menjadi “tail”.

·      “tail=tail->before” yaitu memindahkan “tail” bergeser kearah depan.

·      “tail->next=tmp->before=NULL”, digunakan untuk memutuskan kedua pengait pada node.

·      “delete tmp”, untuk menghapus node dan size—“ untuk mengurangi jumlah node.

void removeAll(){

      node *tmp;

      int x=size;

      for(int n=0;n<x;n++)

      {

      if(size==1){

            tmp=head;

            head=tail=NULL;

            delete tmp;

            size--;

      }

      else{

            tmp=head;

            head=head->next;

            head->before=NULL;

            tmp->next=NULL;

            delete tmp;

            size--;}

          }

      }

·      void removeAll()”, merupakan fungsi untuk mnghapus semua node.

·       ”int x=size”, mendeklarasikan “x” sama dengan “size”.

·        “for(int n=0;n<x;n++)” merupakan jenis perulangan yang digunakan. Jika size-nya sama dengan 1, maka “tmp” akan berada di head, dan nilai head dan tail-nya NULL. Setelah itu “delete tmp” maka size-nya akan berkurang.

·       Namun jika size-nya tidak sama dengan 1, maka “tmp” akan tetap berada pada head dan head-nya yang akan berpindah. Kemudian buat “tmp->next=NULL” dan “tmp->next=NULL” untuk memutuskan pengait ke node. Selanjutnya hapus node “tmp”.

void insertAfter(int x,int nilai){

      node *tmp, *after;

      tmp=new node;

      tmp->data=nilai;

      after= head;

      while(after->data!=x){ 

         after=after->next;

      }

         tmp->next=after->next;

         after->next->before=tmp;

         tmp->before=after;

         after->next=tmp;

         size++;}

·       “void insertAfter(int x,int nilai)”, merupakan fungsi untuk meyisipkan node setelah node yang dikehendaki.

·       “tmp=new node”, membuat node baru dengan nama “tmp”.

·       “tmp->data=nilai”, mendeklarasikan variabel “tmp” sama dengan parameter nilai, dan memindahkan variabel “after” menjadi head dengan cara “after= head”.

·       “while(after->data!=x)”, merupakan sebuah perulangan jika “after->data” tidak sama dengan “x”  maka “after=after->next” akan tetap berlanjut hingga kondisi tersebut tidak terpenuhi.

·       Untuk menyisipkan node menggunakan statement “tmp->next=after->next, after->next->before=tmp, tmp->before=after, after->next=tmp” statement diatas digunakan untuk memutus dan menyambungkan node pada letak yang diinginkan.

Void addBack (int nilai)

      {

       node *tmp;

       tmp=new node;

      tmp->data=nilai;

       tmp->next=NULL;

      tmp->before=tail;

      tail->next=tmp;

      tail=tmp;

      size++;

      }

·      void addBack (int nilai)” merupakan fungsi untuk menambahkan node dari belakang.

·      Membuat node baru dan “tmp->data=nilai” yaitu menjadikan “tmp” sama dengan parameter nilai.

·      “tmp” akan di NULL-kan dengan “tmp->next=NULL” dan memindahkan tail menjadi “tmp”.

Void addFront(int nilai)

   {

      node *tmp;

      tmp=new node;

      tmp->data=nilai;

      if(size==0){

         head=tail=tmp;}

      else{

          tmp->before=NULL;

          tmp->next=head;

          head->before=tmp;

          head=tmp;}

          size++;}

·       “void addFront(int nilai)” merupakan fungsi untuk menambahkan node di depan.

·       Membuat node baru dan “tmp->data=nilai” yaitu menjadikan “tmp” sama dengan parameter nilai.

·       Jika size-nya sama 0, maka head dan tail sama dengan “tmp”. Jika tidak, maka “tmp->before” di NULL-kan.

·       “tmp->next” menjadi head dan “head->before” sama dengan “tmp”. Selanjutnya head akan dipindahkan ke “tmp”.

void main()

{

   DLL a;

   a.dll();

   cout<<"Membuat Fungsi addfront\n";

   a.addFront(1);

   a.addFront(2);

   a.addFront(3);

   a.addFront(4);

   a.addFront(5);

   a.addFront(6);

   a.tampil();

   cout<<endl;

   cout<<"Membuat Fungsi addback\n";

   a.addBack(7);

   a.addBack(8);

   a.tampil();

   cout<<endl;

   cout<<"Membuat Fungsi insert after\n";

   a.insertAfter(1,9);

   a.tampil();

   cout<<endl;

   cout<<"Membuat Fungsi Insert Before\n";

   a.insertbefore(3,10);

   a.tampil();

   cout<<endl;

   cout<<"Membuat Fungsi remove Back\n";

   a.removeBack();

   a.tampil();

   cout<<endl;

   cout<<"Membuat Fungsi remove All\n";

   a.removeAll();

   a.tampil();

   cout<<endl;

   system("pause");}

·      Script tersebut merupakan fungsi utama yang akan digunakan untuk melakukan pemanggilan fungsi-fungsi yang berada di dalam class.

2.6.  KESIMPULAN

Berdasarkan praktikum yang dilakukan dapat disimpulkan bahwa :

1.    Perbedaan double linked list dengan single linked list hanya terletak pada pointer penunjuk. Double linked list mempunyai dua ponter yaitu before dan next sedangkan single linked list hanya mempunyai satu pointer yaitu next saja.

2.    Operasi-operasi pada double linked list yaitu seperti pembuatan node baru, penyisipan dan penghapusan node. Operasi pada double linked list sama saja dengan operasi-operasi yang dilakukan pada single linked list hanya saja double linked list mempunyai pointer balik berupa before.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Continue Reading
No comments
Share: