Pages

Subscribe:

Minggu, 04 Juni 2017

Contoh Program Linked List 10 Operasi

Linked list (list bertaut) adalah salah satu struktur data dasar yang sangat fundamental dalam bidang ilmu komputer. Dengan menggunakan linked list maka programmer dapat menimpan datanya kapanpun dibutuhkan. Linked list mirip dangan array, kecuali pada linked list data yang ingin disimpan dapat dialokasikan secara dinamis pada saat pengoperasian program (run-time).
Pada array, apabila programmer ingin menyimpan data, programmer diharuskan untuk mendefinisikan besar array terlebih dahulu, seringkali programmer mengalokasikan array yang sangat besar(misal 100). Hal ini tidak efektif karena seringkali yang dipakai tidak sebesar itu. Dan apabila programmer ingin menyimpan data lebih dari seratus data, maka hal itu tidak dapat dimungkinkan karena sifat array yang besarnya statik. Linked list adalah salah satu struktur data yang mampu menutupi kelemahan tersebut.
Secara umum linked list tersusun atas sejumlah bagian-bagian data yang lebih kecil yang terhubung (biasanya melalui pointer). Linked list dapat divisualisasikan seperti kereta, bagian kepala linked list adalah mesin kereta, data yang disimpan adalah gerbong, dan pengait antar gerbong adalah pointer.
——– ——– ——–
Mesin Data Data
——– ——– ——–
(kepala) —> Pointer —> Pointer —
——– ——– ——–
Programmer membaca data menyerupai kondektur yang ingin memeriksa karcis penumpang. Programmer menyusuri linked list melalui kepalanya, dan kemudian berlanjut ke gerbong (data) berikutnya, dan seterusnya sampai gerbong terakhir (biasanya ditandai dengan pointer menunjukkan alamat kosong (NULL)). Penyusuran data dilakukan secara satu persatu sehingga penyusuran data bekerja dengan keefektifan On. Dibandingkan array, ini merupakan kelemahan terbesar linked list. Pada array, apabilan programmer ingin mengakses data ke-n (index n), maka programmer dapat langsung mengaksesnya. Sedangkan dengan linked list programmer harus menyusuri data sebanyak n terlebih dahulu.
Linked list adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian.
Bentuk Umum :
infotype –> sebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list
next –> address dari elemen berikutnya (suksesor)
Jika L adalah list, dan P adalah address, maka alamat elemen pertama list L dapat diacu dengan notasi :
Sebelum digunakan harus dideklarasikan terlebih dahulu :
Elemen yang diacu oleh P dapat dikonsultasi informasinya dengan notasi :
Beberapa Definisi :
1. List l adalah list kosong, jika First(L) = Nil
2. Elemen terakhir dikenali, dengan salah satu cara adalah karena
Next(Last) = Nil
Nil adalah pengganti Null, perubahan ini dituliskan dengan #define Nil Null
BERIKUT CONTOH CODING C++ LINKED LIST 10 OPERASI :


#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <conio.h>
using namespace std;

//struktur link list
struct Simpul{
    int INFO;
    Simpul *LINK;
};
Simpul *P, *FIRST, *LAST;

//BuatSimpul
int BUAT_SIMPUL(int x)
{
 P=(Simpul*)malloc(sizeof(Simpul));
 if(P!=NULL)
 {
  P->INFO = x;
 }
 else
 cout<<"Pembuatan Simpul Gagal."<<endl;
}

//Menjadikan Simpul Awal
int Awal()
{
 if(FIRST==NULL)
 {
  FIRST=P;
  LAST=P;
  P->LINK=NULL;
 }
 else
 cout<<"Linked List sudah ada"<<endl;
}

//Pemeriksaan Linked List Apakah kosong atau tidak
int isEmpty(){
 if(LAST == NULL) return 1;
 else return 0;
}

//Insert Kiri
int Kiri()
{
 if(FIRST!=NULL)
 {
  P->LINK=FIRST;
  FIRST=P;
 }
 else
 cout<<"Linked List belum ada"<<endl;
}

//Insert Kanan
int Kanan()
{
 if(LAST!=NULL)
 {
 LAST->LINK=P;
 LAST=P;
 LAST->LINK=NULL;
 }
 else
 cout<<" Linked List belum ada"<<endl;

}

//Delete Kiri
int DeleteKiri()
{
     Simpul *hapus;
     int d;
     if (isEmpty()==0){
          if(FIRST!=LAST){
           hapus = FIRST;
           d = hapus->INFO;
           FIRST = FIRST->LINK;
           delete hapus;

 cout<<"--------------------------------"<<endl; 
 cout<<"Alamat pointer FIRST: "<<FIRST<<endl;
 cout<<"Alamat pointer LAST : "<<LAST<<endl<<endl; 
 cout<<"--------------------------------"<<endl;
      
          } else {
           d = LAST->INFO;
           FIRST=LAST=NULL;
          }
     cout<<endl<<d<<" terhapus "<<endl;
     } else cout<<"Linked List Kosong"<<endl;
}

//Delete Kanan
int DeleteKanan()
{
     Simpul *bantu,*hapus;
     int T;
     if (isEmpty()==0){
      bantu = FIRST;
          if(FIRST!=LAST){
               while(bantu->LINK!=LAST){
                bantu = bantu->LINK;
               }
               hapus = LAST;
               LAST=bantu;
               T = hapus->INFO;
               delete hapus;
               LAST->LINK = NULL;
               cout<<"--------------------------------"<<endl; 
 cout<<"Alamat pointer FIRST: "<<FIRST<<endl;
 cout<<"Alamat pointer LAST : "<<LAST<<endl<<endl; 
 cout<<"--------------------------------"<<endl;
            }else {
            T = LAST->INFO;
             FIRST=LAST=NULL;
            }
      cout<<endl<<T<<" terhapus "<<endl;
     } else cout<<"Linked List Kosong"<<endl;
}

int tampil()
{
 Simpul *tmpl;
 tmpl = FIRST;
     if(isEmpty()==0){
          while(tmpl!=NULL){
           cout<<tmpl->INFO<<" ";
           tmpl=tmpl->LINK;
 
          }
     } else cout<<"Linked List Kosong";
}

int main()
{
    int data;
    char pilih;
 //Inisialisasi
 FIRST=NULL;
 
 //Input data yang mau disimpan ke dalam linked list
 cout<<"Input data yang mau disimpan: ";
 cin>>data;
 cout<<endl<<endl;
 
 //Panggil Fungsi buat simpul
 BUAT_SIMPUL(data);

 
 //Cek Data
 cout<<"Kondisi sebelum dibuat simpul"<<endl;
 cout<<"--------------------------------"<<endl;  
 cout<<"Isi simpul          : "<<P->INFO<<endl;
 cout<<"Alamat pointer P    : "<<P<<endl;
 cout<<"Isi link            : "<<P->LINK<<endl;
 cout<<"--------------------------------"<<endl; 
 cout<<"Alamat pointer FIRST: "<<FIRST<<endl;
 cout<<"Alamat pointer LAST : "<<LAST<<endl<<endl; 
 //Panggil Fungsi menjadi simpul awal
 AWAL:
 Awal();

 //Cek Data
 cout<<"Kondisi sesudah dibuat simpul awal"<<endl;
 cout<<"--------------------------------"<<endl;  
 cout<<"Isi simpul          : "<<P->INFO<<endl;
 cout<<"Alamat pointer P    : "<<P<<endl;
 cout<<"Isi link            : "<<P->LINK<<endl;
 cout<<"--------------------------------"<<endl; 
 cout<<"Alamat pointer FIRST: "<<FIRST<<endl;
 cout<<"Alamat pointer LAST : "<<LAST<<endl<<endl; 
 cout<<"--------------------------------"<<endl;  
 cout<<"Urutan data terbaru yang telah disimpan: "<<endl;
 tampil();

    do
    {
     MENU:
        cout<<endl<<endl;
        cout<<"==========================="<<endl;
        cout<<"OPERASI PROGRAM LINKED LIST"<<endl;
        cout<<"==========================="<<endl;
        cout<<" 1. Insert Kiri"<<endl;
        cout<<" 2. Insert Kanan"<<endl;
        cout<<" 3. Delete Kiri"<<endl;
        cout<<" 4. Delete Kanan"<<endl;
        cout<<" 5. Keluar"<<endl;
        cout<<"==========================="<<endl;
        cout<<"Masukan Pilihan : ";cin>>pilih;
        cout<<endl;
        switch (pilih)
        {
            case '1':{
                cout<<"Masukkan Data = ";
                cin>>data;
                BUAT_SIMPUL(data);
                if(FIRST==NULL)
                {
                 goto AWAL;
                }
                else
                Kiri();
                cout<<"Urutan data terbaru yang telah disimpan: "<<endl;
                tampil();
    cout<<"Kondisi sesudah dibuat simpul awal"<<endl;
 cout<<"++++++++++++++++++++++++++++++++++"<<endl;  
 cout<<"Isi simpul          : "<<P->INFO<<endl;
 cout<<"Alamat pointer P    : "<<P<<endl;
 cout<<"Isi link            : "<<P->LINK<<endl;
 cout<<"+++++++++++++++++++++++++++++++++"<<endl; 
 cout<<"Alamat pointer FIRST: "<<FIRST<<endl;
 cout<<"Alamat pointer LAST : "<<LAST<<endl<<endl; 
 cout<<"+++++++++++++++++++++++++++++++++"<<endl;
                 
                goto MENU;
                break;
            }
            case '2':{
                cout<<"Masukkan Data = ";
                cin>>data;
                BUAT_SIMPUL(data);
                if(FIRST==NULL)
                {
                 goto AWAL;
                }
                else
                Kanan();
                cout<<"Urutan data terbaru yang telah disimpan: "<<endl;
                tampil();
    cout<<"Kondisi sesudah dibuat simpul awal"<<endl;
 cout<<"--------------------------------"<<endl;  
 cout<<"Isi simpul          : "<<P->INFO<<endl;
 cout<<"Alamat pointer P    : "<<P<<endl;
 cout<<"Isi link            : "<<P->LINK<<endl;
 cout<<"--------------------------------"<<endl; 
 cout<<"Alamat pointer FIRST: "<<FIRST<<endl;
 cout<<"Alamat pointer LAST : "<<LAST<<endl<<endl; 
 cout<<"--------------------------------"<<endl;
                 
                goto MENU;
                break;
            }
            case '3':{
                DeleteKiri();
                cout<<"Urutan data terbaru yang telah disimpan: "<<endl;
    tampil();
     
    goto MENU;
                break;
            }
            case '4':{
                DeleteKanan();
                cout<<"Urutan data terbaru yang telah disimpan:"<<endl;
                tampil();
                
                goto MENU;
                break;
            }
            
            case '5': {
            return 0;
             break;
            }
            default : {
            cout<<"Maaf, Pilihan Anda tidak tersedia! Silahkan coba lagi"<<endl;
            goto MENU;
            }

        }
        getch();
    }
    while(pilih!=5);
   
}
 

ITULAH CONTOH CODING C++ LINKED LIST 10 OPERASI, SAYA IZINKAN COPAS CODING INI.
APABILA ADA KEKURANGAN DAN KESALAHAN, SILAHKAN DIPERBAIKI.
»»  Selengkapnya...