Jumat, 15 Desember 2017

Linked List Dalam Bahasa C++



LINKED LIST DALAM BAHASA C++
Linked list adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian linked list juga merupakan suatu cara untuk menyimpan data dengan struktur sehingga dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data yang diperlukan. Struktur ini lebih dinamis karena banyaknya elemen dengan mudah ditambah atau dikurangi, berbeda dengan array yang ukurannya tetap.
1. Single Linked List    
Single Linked List Circular (SLLC) adalah Single Linked List yang pointer nextnya menunjuk pada dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya.
a.  LIFO (Last In First Out), aplikasinya : Stack (Tumpukan)
Suatu metode pembuatan Linked List di mana data yang masuk paling akhir adalah data yang keluar paling awal. Hal ini dapat di analogikan (dalam kehidupan sehari-hari) dengan saat Anda menumpuk barang seperti digambarkan dibawah ini. Pembuatan sebuah simpul dalam suatu linked list seperti digambarkan dibawah ii, disebutkan istilah INSERT, Jika linked list dibuat dengan metode LIFO, terjadi penambahan / Insert simpul di belakang.
b.  FIFO (First In First Out), aplikasinya : Queue (Antrean)
Suatu metode pembuatan Linked List di mana data yang masuk paling awal adalah data yang keluar paling awal juga. Hal ini dapat di analogikan (dalam kehidupan sehari-hari), misalnya saat sekelompok orang yang datang (ENQUEUE) mengantri hendak membeli tiket di loket. Jika linked list dibuat dengan metode FIFO, terjadi penambahan / Insert simpul didepan.
2. Double Linked List
Double Linked List adalah elemen-elemen yang dihubungkan dengan dua pointer dalam satu elemen dan list dapat melintas baik di depan atau belakang. Elemen double link list terdiri dari tiga bagian:
a. Bagian data informasi
b. Pointer next yang menunjuk ke elemen berikutnya
c. Pointer prev yang menunjuk ke elemen sebelumnya
contoh program saya buat
#include <iostream>
#include <conio.h>
#include<string.h>

using namespace std;
int pil;
struct node
{
    char nama [20], asal [20], umur [10];
    node *prev, *next;
};
node *baru, *head=NULL, *tail=NULL,*hapus,*current = NULL;
void buat_baru()
{  
    baru = new(node);
    system("cls");
    cout<<"  Pilihan pertama yaitu input data\n\n";
    cout<<"input nama : ";cin>>baru->nama;
    cout<<"input asal : ";cin>>baru->asal;
    cout<<"input umur : ";cin>>baru->umur;
       baru->prev=NULL;
    baru->next=NULL;
}
void tampil()
{
       if (head==NULL)
    cout<<"Kosong";
    else
    {
        current=head;
        while(current!=NULL)
        {
              cout<<"\n  Data Pengunjung Museum     \n"<<endl;
           cout<<" nama   : "<<current->nama;
           cout<<"\n asal   : "<<current->asal;
           cout<<"\n umur   : "<<current->umur;
           cout<<"\n";
            current=current->next;
        }
    }
    getch();
}
void tambah_belakang()
{
    buat_baru();
    if(head==NULL)
    {
        head=baru;
        tail=baru;
    }
    else
    {
        tail->next=baru;
        baru->prev=tail;
        tail=baru;
    }
    cout<<endl<<endl;
    tampil();
}
void hapus_belakang()
{
    if (head==NULL)
    cout<<"Kosong";
    else if (head->next==NULL)
    {
       hapus=head;
       head=NULL;
       tail=NULL;
       delete hapus;
    }
    else
    {
       hapus=tail;
       tail=hapus->prev;
       tail->next=NULL;
       delete hapus;
    }
       cout<<endl<<endl;
       tampil();
}
void sorting()
{
       node *temp1,*temp2;
       temp1=new node;
       temp2=new node;
       int tempasal, tempumur;
       char tempnama[20];
      
       for(temp1=head;temp1!=NULL;temp1=temp1->next)
       {
              for(temp2=temp1->next;temp2!=NULL;temp2=temp2->next)
              {
                     if(temp1->nama[0]>temp2->nama[0])
                     {
                           strcpy(tempnama, temp1->nama);
                           strcpy(temp1->nama, temp2->nama);
                           strcpy(temp2->nama, tempnama);
                     }
              }
       }
       getch();
}
void cari()
{
       char nama [50];
       int pos = 0;
       cout<<"\ncari berdasarkan nama : ";
       cin>>nama;
       if(head==NULL)
       {
       cout<<"data di linked list kosong";
       getch();
       return;
    }
    current = head;
    while(current!=NULL)
    {
        pos++;
        if(strcmp(nama,current->nama)==0)
              {
        cout<<"\nTerdapat Data : "<<nama;
        getch();
        return;
              }    
    if(current->next != NULL)
    current = current->next;
    else
    break;
       }
cout<<"data tidak ada\n";
getch();
}
main()
{
    do
    {
        system("cls");
        cout<<"----------------------------------"<<endl;
        cout<<"|--------------------------------|"<<endl;
        cout<<"|     Data Pengunjung Museum     |"<<endl;
        cout<<"|--------------------------------|"<<endl;
        cout<<"----------------------------------"<<endl;
        cout<<"| 1 | Tambah data                |"<<endl;
        cout<<"| 2 | Hapus data                 |"<<endl;
        cout<<"| 3 | Cari data                  |"<<endl;
        cout<<"| 4 | Urutkan data               |"<<endl;
        cout<<"| 5 | Tampilkan                  |"<<endl;
        cout<<"| 0 | Selesai                    |"<<endl;
        cout<<"----------------------------------"<<endl;
        cout<<"Pilihan Anda : ";
        cin>>pil;
        if(pil==1)
        tambah_belakang();
           else if(pil==2)
           hapus_belakang();
           else if(pil==3)
           cari();
           else if(pil==4)
           {
               tampil();
              sorting();
              cout<<"\nSetelah di sort nama\n";
              tampil();
              }
              else if(pil==5)
              tampil();
              else
              cout<<"selesai";
           }
while(pil!=0);
}
Bila program bisa di compiler maka akan muncul seperti gambar di bawah ini :

Tidak ada komentar:

Posting Komentar

Konfigurasi Web Server dan simulasi vlan

Pertama-tama kita buat 1 switch 2 server dan 8 klien. Kita konekan sendiri dengan langkah2 sebelum nya yang sudah kita kuasai. Apabila suda...