Kamis, 05 Oktober 2017

Slide 2 SMT3

UML
UML Yang dimaksud dengan UML adalah UML merupakan singkatan dari“Unified Modelling Language” yaitu suatu metode permodelan secara visual untuk sarana perancangan sistem berorientasi objek, atau definisi UML yaitu sebagai suatu bahasa yang sudah menjadi standar pada visualisasi, perancangan dan juga pendokumentasian sistem software. Saat ini UML sudah menjadi bahasa standar.
Sejarah UML
Pada oktober 1994, Dr.James Rumbaught bergabung denagn perusahaan Rational software., dimana Grady BOOch sudah bekerja disana sebelumnya.Grady Booch mengembangkan Objek Oriented Design (OOD) dan DR.James Rumbaught mengembangkan objek modeling Tecnque (OMT)
Musim gugur 1995 Dr. Ivar Jacobson ikut bergabung dengan duet Rumbaught-Booch, dengan memperkenalkan tool  use case. Trio tersebut ada tahun 1996 Menghasilkan  Unifed Modelling Language  (UML) V.0.9.
Tujuan atau fungsi UML
Inilah beberapa tujuan atau fungsi dari penggunaan UML, yaitu :
  • Dapat memberikan bahasa permodelan visual kepada pengguna dari berbagai macam pemerograman maupun proses rekayasa.
  • Dapat menyatukan praktek-praktek terbaik yang ada dalam permodelan.
  • Dapat memberikan model yang siap untuk digunakan, merupakan bahasa permodelan visual yang ekspresif untuk mengembangkan sistem dan untuk saling menukar model secara mudah.
  • Dapat berguna sebagai blue print, sebab sangat lengkap dan detail dalam perancangannya yang nantinya akan diketahui informasi yang detail mengenai koding suatu program.
  • Dapat memodelkan sistem yang berkonsep berorientasi objek, jadi tidak hanya digunakan untuk memodelkan perangkat lunak(software) saja.
Dapat menciptakan suatu bahasa permodelan yang nantinya dapat dipergunakan oleh manusia maupun oleh mesin.
Konsep Dasar
 Objek
·         Classes
Sekelompok object yang mempunyai attribute, operasi, dan semantik
·         Interfaces
Antar-muka yang menghubungkan dan melayani antarkelas dan elemen mendefinisikan sebuah kelompok dari spesifikasi pengoperasian.
·         Collaboration
Interaksi dari kumpulan kelas-kelas
·         Uses Cases
Pembentuk tingkah laku objek dalam sebuah model serta direalisasikan sebuah collaboration.
·         Nodes
Bentuk fisik dari elemen-elemen yang ada pada saat dijalankanya sebuah sistem.

Relationship
·         Dependency
hubungan semantik antara dua objek yang mana sebuah objek berubah mengakibatkan objek satunya akan berubah pula.
·         Association
hubungan antar benda secara structural yang terhubungan diantara objek dalam kesatuan objek.
·         Generalizations
hubungan khusus dalam objek anak yang menggantikan objek induk dan memberikan pengaruhnya dalam hal struktur dan tingkah lakunya kepada objek induk.
·         Realizations
hubungan semantik antarpengelompokkan yang menjamin adanya ikatan diantaranya yang diwujudkan diantara interface dan kelas atau elements, serta antara use cases dan collaborations.

Diagram UML
·         Diagram Use Case
Diagram Use Case berguna dalam tiga hal :
a. Menjelaskan fasilitas yang ada (requirements)
b. Komunikas dengan klien
c. Membuat test dari kasus – kasus secara umum


contoh

















·         Diagram Class
Diagram Class mempunyai 3 macam relationalships (hubungan),
sebagai berikut :
A. Association, suatu hubungan antara bagian dari dua kelas yang terjadi jika salah satu bagian dari kelas mengetahui kelas yang lain dalam melakukan suatu kegiatan..
B. Aggregation, hubungan association dimana salah satu kelasnya merupakan bagian dari suatu kumpulan dan memiliki titik pusat yang mencakup keseluruhan bagian.
C. Generalization, hubungan turunan dengan mengasumsikan satu kelas merupakan suatu kelas super dari kelas yang lain.

·         Diagram Package dan Object
Merupakan kumpulan elemen–elemen logika UML yang bertujuan untuk mengelompokkan Diagram class yang lebih kompleks.
·         Diagram Sequence
Merupakan salah satu diagram Interaction yang menjelaskan bagaimana suatu operasi itu dilakukan yang diatur berdasarkan waktu.

·         Diagram Collaboration
Merupakan diagram Interaction berfungsi membawa informasi yang sama dengan diagram Sequence, tetapi lebih memusatkan atau memfokuskan pada kegiatan obyek dari waktu informasi itu dikirimkan dan bukan pada waktu penyampaian message.

·         Statechart
Diagram yang menggambarkan transisi dan perubahan keadaan (dari satu state ke state lainnya) suatu objek pada sistem sebagai akibat dari stimuli yang diterima.

First state adalah keadaan kosong dari tempat proses dimulai. States bagian berikutnya tiba untuk event seperti send request, confirm request, dan dispatch order, Event  ini bertanggung jawab atas perubahan keadaan objek order.

Selama siklus hidup sebuah object (contoh di atas object order)  ia melewati keadaan dimana mungkin ada beberapa pintu keluar yang tidak normal. Kelonggaran abnormal ini bisa terjadi karena beberapa masalah pada sistem. Bila keseluruhan siklus hidup selesai, maka transaksi ini dianggap sebagai transaksi lengkap seperti terlihat pada gambar diatas.

·         Diagram Activity
Menunjukkan bagaimana aktifitas – aktifitas tersebut bergantung satu sama lain dan berfokus pada aktifitas – aktifitas yang terjadi yang terkait dalam suatu proses tunggal.


·         Diagram Component
sebuah kode–kode modul yang merupakan fisik sebenarnya dari diagram Class.

·         Deployment Diagram
A. Menggambarkan arsitektur system
B. Pemetaan software(component pada component diagram) yang jalan di sebuah hardware (node pada  deployment diagram)
C.Software component tidak selalu menggambarkan setiap software component yang ada pada sebuah    Komputer(system operasi/Microsoft Office, dll), akan tetapi software component tersebut akan digambarkan  ketika ada hubungan dengan pengimplementasian sebuah system.
D. Menggambarkan bagaimana s/w dan h/w bekerja sama
E. Menggambarkan topologi jaringan
F. Artifact













Posted on by Bagus Iwang Kusuma R. | No comments

Slide 1 SMT3


Pemodelan Sistem Bebasis Objek

Konsep awal programming (Basic) dengan kekuatan GOTO statement, ini merupakan Non Procedural Language.Procedural   Language   /   Bahasa   pemograman   terstruktur menghilangkan kelemahan GOTO konsep non procedural language Contoh : Pascal, COBOL, FORTRAN, BASIC dll Object Oriented Programming, mengarah pada konsep object. Akhir tahun 1960 diperkenalkan pertama kali dengan bahasa SIMULA. Tahun 1970 dikembangkan Smaltalk. Bahasa pemrograman lainnya : Clipper 5.2 Java, Prolog dll

Visual Object Oriented Programming, tahun 1991 diperkenalkan pertama kali dengan bahasa Visual Basic oleh Microsoft Bahasa pemograman lainnya : Visual C++, Visual Foxpro 3.0, CORBA (Common Object Request Broker Architecture), dll

Pengembangan berorientasi objek merupakan cara berpikir baru tentang perangkat lunak berdasarkan abstraksi yang terdapat dalam dunia nyata. Dalam konteks pengembangan menunjuk pada bagian awal dari siklus hidup pengembangan sistem, yaitu survei, analis, desain, implementasi dan pemeliharaan sistem. Hal yang lebih penting dalam pengembangan berorientasi objek adalah konsep mengidentifikasi dan mengorganisasi domain aplikasi dari pada penggunaan bahasa pemrograman, berorientasi objek atau tidak.

Berorientasi objek dalam proses konseptual terpisah dengan bahasa pemrograman sampai tahap terakhir. Pengembangan berorientasi objek secara mendasar merupakan cara berpikir baru dan bukan suatu teknik pemrograman. Dapat melayani sebagai media spesifikasi, analisa, dokumentasi dan interface seperti halnya pemrograman.

Bahkan sebagai alat pemrograman, dapat memiliki berbagai sasaran, termasuk bahasa pemrograman dan basis data sebaik dengan bahasa pemrograman berorientasi obyek

Fokus utama metodologi ini pada objek, dapat digambarkan sebagai benda, orang, tempat dan sebagainya yang memiliki atribut dan metode.

Diperkenalkan tahun 1980 menggunakan perangkat kerja dan teknik-teknik yang dibutuhkan dalam pengembangan sistem, yaitu dynamic dan static object oriented model, state transition diagram dan case scenario.

Objek dan kelas

Objek didefinisikan sebagai konsep, abstraksi atau benda dengan batasan dan arti untuk suatu masalah. Semua objek mempunyai identitas yang berbeda dengan lainnya. Kadang-kadang objek berarti suatu barang, maka digunakan istilah object instance, dan object class untuk menunjukkan satu grup dari barang yang sama. Sebuah objek merupakan sebuah entitas yang mencakup data dan metode. Kelas merupakan satu atau lebih objek dengan persamaan atribut dan metode, sedangkan kelas-&-objek adalah kelas dengan satu atau lebih objek di dalamnya. Nama kelas adalah kata benda tunggal, atau kata sifat dan kata benda.

Istilah-istilah Objek

Atribut  : Data item yang menegaskan Objek
Operasi : Fungsi di dalam kelas yang dikombinasikan bentuk tingkah laku kelas
Metode  : Pelaksanaan prosedur (badan dari kode yang mengeksekusi respon terhadap permintaan objek lain di dalam sistem).

Struktur object dan hirarki kelas

1.Whole-Part Structure memperlihatkan hirarki dari suatu kelas sebagai komponen dari kelas lain yang disebut juga sub objek. Contohnya, kelas Mobil adalah Whole dan komponennya Mesin, Rangka, dll merupakan Part1, Part 2, …, Partn.

2.Gen-Spec memperlihatkan kelas sebagai spesialisasi dari kelas diatasnya Kelas yang mempunyai sifat umum disebut Generalization, Superclass atau Topclass. Kelas yang mempunyai sifat khusus disebut Specialization. Contohnya, kelas Mobil adalah Generalization, sedangkan Sedan, Truk, Minibus, dll merupakan Specizlization1, Specialization2, dst

Tahap Tahap Metodologi
1.Analisa
Model analisa adalah abstraksi yang ringkas dan tepat dari apa yang harus dilakukan oleh sistem, dan bagaimana melakukannya. Objek dalam model harus merupakan konsep domain dari aplikasi, bukan merupakan implementasi komputer seperti struktur data.
2. Design
Fokus object design adalah perencanaan struktur data dan algoritma yang diperlukan untuk implementasi setiap kelas. Objek domain aplikasi dan objek domain komputer dijelaskan dengan menggunakan konsep dan notasi berorientasi objek yang sama.
3.Impamentasi
Kelas, objek dan relasinya dikembangkan dalam tahap object design, akhirnya diterjemahkan ke dalam bahasa pemrograman, basis data, dan implementasi perangkat keras.Dalam tahap implementasi hal yang penting adalah mengikuti penggunaan perangkat lunak yang baik.

Objek
Objek adalah kombinasi antara struktur data dan perilaku dalam satu entitas dan mempunyai nilai tertentu yang membedakan entitas. Bisa berupa:
obyek konkrit : rumah, sekolah, dosen, mahasiswa, dll.
obyek abstrak : mata kuliah, penjadwalan, dll.

Karakteristiknya adalah:
Memiliki Identity (identitas)
Memiliki klasisfikasi
Memiliki state (kondisi/keadaan)
State sebuah objek dinyatakan dalam attribute/properties
Memiliki behavior (perilaku/method)
Perilaku suatu objek dinyatakan dalam operation.
Perilaku suatu objek adalah mendefinisikan bagaimana objek
tersebut bertindak dan memberikan reaksi.

Contoh Objek

Attribut:
Nomor Polisi
Ban, Stir,Pedal

Behavior/Tingkah Laku
Cara Menghidupkan Mesin
Cara Mengendarai Mesin
karakter berorientasi objek
1.Encapsulation (pembungkusan)
Pengkapsulan merupakan dasar untuk pembatasan ruang lingkup program terhadap data yang diproses. Dengan demikian objek atau prosedur dari luar tidak dapat mengaksesnya. Data terlindung dari prosedur atau objek
lain kecuali prosedur yang berada dalam objek itu sendiri. Sebuah object yang terkapsulasi dapat dianggap sebagai black box. Proses di dalamnya adalah tertutup bagi klien, yang hanya memanggil metode yang menjadi interface. Dalam Java, dasar enkapsulasi adalah Class. Variabel atau method sebuah class tidak dapat diakses dengan menjadikan class tersebut private/protected. 

2.Inheritance (pewarisan)
Inheritance (pewarisan) adalah teknik yang menyatakan bahwa anak dari objek akan mewarisi data/atribut dan metode  dari  induknya  langsung.  Bila  inheritance dipergunakan, kita tidak perlu membuat atribut dan metode
lagi pada anaknya, karena telah diwarisi oleh induknya. Inheritance mempunyai arti bahwa atribut dan operasi yang dimiliki bersama di antara class yang mempunyai hubungan secara hirarki.

Sebuah class bisa mewariskan atribut dan method-nya ke class yang lain
– Class yang mewarisi disebut superclass
– Class yang diberi warisan disebut subclass
– Sebuah subclass bisa mewariskan atau berlaku sebagai
superclass bagi class yang lain => disebut multilevel inheritance 

Generalisasi adalah relasi antara beberapa subclass dengan superclass di atasnya. Kelas yang lebih rendah mewarisi semua atribut yang dimiliki oleh kelas yang lebih tinggi dan juga memiliki atribut yang membedakannya dengan kelas-kelas lain yang sederajat.

3.Polymorphisme
Polymorphisme yaitu aksi yang sama yang dapat dilakukan terhadap beberapa objek. Polimorfisme berarti bahwa  operasi  yang  sama  mungkin  mempunyai perbedaan dalam kelas yang berbeda.
Polymorphism adalah kemampuan untuk tampil dalam berbagai bentuk. Hal ini mengacu pada kemungkinan message yang sama dikirimkan ke obyek-obyek lain pada class yang berbeda, dan merespon secara berbeda.

Perbedaan object orientade dan non object
Penggunaan alat

1.Metodologi  non  objek  menggunakan  beberapa  alat  untuk menggambarkan model seperti data flow diagram, entity relationship diagram dan structure chart. Sedangkan metodologi berorientasi objek menggunakan satu jenis model dari tahap analisa sampai implementasi, yaitu diagram objek.
2. Data dan proses
Pada metodologi non objek, data dan proses dianggap sebagai dua komponen yang berlainan Sedangkan pada metodologi berorientasi objek, data dan proses merupakan satu kesatuan, yaitu bagian dari objek.
3. Bahasa pemrograman
Metodologi non objek dipergunakan untuk melengkapi pemrograman terstruktur pada bahasa generasi ketiga
Metodologiobjek dipergunakan untuk melengkapi pemrograman terstruktur pada bahasa generasi keempat.

Posted on by Bagus Iwang Kusuma R. | No comments

Senin, 24 April 2017

Single Linked List (Non Circular)


KONSEP POINTER DAN LINKED LIST


Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya, maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu perubah yang disebut dengan perubah dinamis (Dinamic variable)

Perubah Dinamis (Dinamic variable)
Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.


Perbedaan Perubah Statis & Dinamis
Pada perubah statis, isi Memory pada lokasi tertentu (nilai perubah) adalah data sesungguhnya yang akan diolah. Pada perubah dinamis, nilai perubah adalah alamat lokasi lain yang menyimpan data sesungguhnya. Dengan demikian data yang sesungguhnya dapat dimasukkan secara langsung.

Dalam hal cara pemasukkan data dapat diilustrasikan seperti dibawah ini.



DEKLARASI POINTER

Pointer digunakan sebagai penunjuk ke suatu alamat memori
Dalam pemrograman C++, Type Data Pointer
dideklarasikan dengan bentuk umum :

Type Data * Nama Variabel;


Type Data dapat berupa sembarang type data, misalnya char, int atau float. Sedangkan Nama veriabel merupakan nama variabel pointer.

Contoh penggunaan pointer dalam program C++:
Void main()
{
int x,y,*z;
x = 75; //nilai x = 75
y = x; //nilai y diambil dari nilai x
z = &x; //nilai z menunjuk kealamat pointer dari nilai x
getch();
}

LINKED LIST (LINKED LIST)

Salah satu Struktur Data Dinamis yang paling sederhana adalah Linked List atau Struktur Berkait atau Senarai Berantai, yaitu suatu kumpulan komponen yang disusun secara berurutan dengan bantuan Pointer.


Linked List (Senarai Berantai) disebut juga dengan Senarai Satu Arah (One-Way List). Masing-masing komponen dinamakan dengan Simpul (Node)


LINKED LIST (LINKED LIST)

Linked List juga mengandung sebuah variable petunjuk list, yang biasanya diberi nama
Start (Awal), yang berisi alamat dari simpul pertama dalam list.


PENYAJIAN LINKED LIST DALAM MEMORI




Bentuk Node Single Linked List non Circular

Single : field pointer-nya hanya satu dan satu arah,pada akhir node pointernya menunjuk NULL








Linked List : node-node tersebut saling terhubung satu sama lain.

Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data.

Node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list.





Pembuatan Single Linked List non Circular


Deklarasi Node :

  typedef struct TNode{

    int data;

    TNode *next;

};

Keterangan : Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari TNode.

Fungsi Inisialisasi Single Linked List


void init()                                                          
{

    head = NULL;

}

Function untuk mengetahui kondisi Single Linked List


Jika pointer head tidak menunjuk pada suatu node maka kosong

                int isEmpty()

                {

                if (head == NULL) return 1;

                else return 0;

                }

Menambah Node di Depan

  • Penambahan node baru akan dikaitan di node paling depan, namun pada saat pertama kali (data masih kosong), maka penambahan data dilakukan dengan cara: node head ditunjukkan ke node baru tersebut.
  • Prinsipnya adalah mengkaitkan node baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan.

Menambah Node di Depan dengan C++
void insertDepan(int databaru)
{
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
if(isEmpty()==1)
{
     head=baru;
     head->next = NULL;
}
else
{
     baru->next = head;
     head = baru;
}
printf(”Data masuk\n”);
}

Menambah Node di Belakang

  • Penambahan data dilakukan di belakang, namun pada saat pertama kali, node langsung ditunjuk oleh head.
  • Penambahan di belakang membutuhkan pointer bantu untuk mengetahui node terbelakang. Kemudian, dikaitkan dengan node baru.
  • Untuk mengetahui data terbelakang perlu digunakan perulangan.

Menambahan node dibelakang dengan C++
void insertBelakang (int databaru)
{
TNode *baru,*bantu;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
if(isEmpty()==1) {
  head=baru;
  head->next = NULL;
}
else {
  bantu=head;
  while(bantu->next!=NULL){
   bantu=bantu->next;
 }
 bantu->next = baru;
}
printf("Data masuk\n“);
}

Menghapus Node di Depan

  • Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka harus dilakukan penggunakan suatu pointer lain (hapus) yang digunakan untuk menunjuk node yang akan dihapus, barulah kemudian menghapus pointer hapus dengan menggunakan perintah delete.
  • Sebelum data terdepan dihapus, terlebih dahulu head harus menunjuk ke node berikutnya agar list tidak putus, sehingga node setelah head lama akan menjadi head baru  
  • Jika head masih NULL maka berarti data masih kosong! 
Menghapus Node didepan dengan C++
void hapusDepan ()
{
TNode *hapus;
int d;
if (isEmpty()==0){
  if(head->next != NULL){
     hapus = head;
     d = hapus->data;
     head = head->next;
     delete hapus;
} else {
     d = head->data;
     head = NULL;
 }
 printf(“%d terhapus\n“,d);
 } else cout<<"Masih kosong\n";

}

Menghapus Node di Belakang


  • Membutuhkan pointer bantu dan hapus. Pointer hapus digunakan untuk menunjuk node yang akan dihapus, pointer bantu untuk menunjuk node sebelum node yang dihapus yang akan menjadi node terakhir.
  • Pointer bantu digunakan untuk menunjuk ke nilai NULL. Pointer bantu selalu bergerak sampai sebelum node yang akan dihapus, kemudian pointer hapus diletakkan setelah pointer bantu. Selanjutnya pointer hapus akan dihapus, pointer bantu akan menunjuk ke NULL.

Menghapus node dibelakang dengan C++
void hapusBelakang(){
   TNode *hapus,*bantu;
   int d;
   if (isEmpty()==0){
    if(head->next != NULL){
            bantu = head;
            while(bantu->next->next!=NULL){
            bantu = bantu->next;
            }
            hapus = bantu->next;
            d = hapus->data;
                  bantu->next = NULL;
            delete hapus;
   } else {
            d = head->data;
            head = NULL;
   }
   printf(“%d terhapus\n“,d);
  } else printf(“Masih kosong\n“);

}


Single Linked List non Circular Menggunakan Head dan Tail

  • Dibutuhkan dua variabel pointer : head dan tail
  • Head selalu menunjuk pada node pertama, sedangkan tail selalu menunjuk pada node terakhir.
  • Kelebihan dari Single Linked List dengan Head & Tail adalah pada penambahan data di belakang, hanya dibutuhkan tail yang mengikat node baru saja tanpa harus menggunakan perulangan pointer bantu.

Menggunakan Head dan Tail

Inisialisasi Linked List
               TNode *head, *tail;

Fungsi Inisialisasi Linked List
          void init(){
            head = NULL;
            tail = NULL;
          }
Function untuk mengetahui kondisi LinkedList kosong / tidak
          int isEmpty(){
             if(tail == NULL) return 1;
             else return 0;
           }

Menambah Node di Depan Dengan Head dan Tail
void insertDepan(int databaru){
  TNode *baru;
  baru = new TNode;
  baru->data = databaru;
  baru->next = NULL;
  if(isEmpty()==1){
      head=tail=baru;
      tail->next=NULL;
     }
else {
   baru->next = head;
   head = baru;
 }
 printf(”Data masuk\n”);

}

Menambah Node di Belakang Dengan Head dan Tail
void tambahBelakang(int databaru){
     TNode *baru,*bantu;
     baru = new TNode;
     baru->data = databaru;
     baru->next = NULL;
     if(isEmpty()==1){
      head=baru;
      tail=baru;
      tail->next = NULL;
     }
     else {
            tail->next = baru;
            tail=baru;
   }
   printf("Data masuk\n“);
}

Menghapus Node di Depan (Dengan Head dan Tail)
void hapusDepan(){
     TNode *hapus;
     int d;
     if (isEmpty()==0){
            if(head!=tail){
              hapus = head;
              d = hapus->data;
              head = head->next;
              delete hapus;
            } else {
              d = tail->data;
              head=tail=NULL;
            }
             printf(“%d terhapus\n“,d);
       } else printf("Masih kosong\n“);

}

Menghapus Node di Belakang (Dengan Head dan Tail)
void hapusBelakang(){
   TNode *bantu,*hapus;
   int d;
   if (isEmpty()==0){
           bantu = head;
           if(head!=tail){
                while(bantu->next!=tail){
                bantu = bantu->next;
                }
                hapus = tail;
                tail=bantu;
                d = hapus->data;
                delete hapus;
                tail->next = NULL;
}else {
                d = tail->data;
                head=tail=NULL;
      }
      cout<<d<<" terhapus\n";
   } else cout<<"Masih kosong\n";

}

Penggambaran untuk menambah dan menghapus node di posisi tengah pada :

  • Single Linked List dengan Head
  • Single Linked List dengan Head & Trail
ILUSTRASI/PENGGAMBARAN UNTUK MENAMBAH DAN MENGHAPUS NODE DI POSISI TENGAH PADA.

SINGLE LINKED DENGAN HEAD

# include <iostream.h>
# include <conio.h>
struct TNode{
char data[15];
TNode *next;
};
TNode *head;
int opsi = 0;
void init(){
head = NULL;
}
bool isEmpty(){
if (head ==NULL) return true;
else return false;
}
void tambahdepan(){
TNode *baru;
baru = new TNode;
cout << "Masukkan DATA : ";
cin >> baru-> data;
baru->next = NULL;
clrscr();
if(isEmpty()==true){
head=baru;
head->next = NULL;
}else {
baru->next = head;
head = baru;
}
}
void tambahbelakang(){
TNode *baru,*bantu;
baru = new TNode;
cout << "Masukkan DATA  : ";
cin >> baru-> data;
baru->next = NULL;
clrscr();
if(isEmpty()== true){
head=baru;
head->next = NULL;
} else {
bantu=head;
while(bantu->next!=NULL){
bantu=bantu->next;
}
bantu->next = baru;
}
}
void tambahtengah(){
TNode *baru, *bantu;
int posisiSisip;
if(isEmpty()== false){
cout<<"Akan disisip setelah Data Ke ? : "; cin>>posisiSisip;
bantu=head;
baru=new TNode;
for(int i=1;i<posisiSisip;i++){
if(bantu->next!=NULL)
bantu=bantu->next;
else break;
}
cout << "Masukkan DATA  : ";
cin >> baru-> data;
baru->next=bantu->next;
bantu->next=baru;
clrscr();
}
else cout<<"Mau sisip tengah Belum ada data !! …silahkan masukkan Data dula aja…..";
}
void hapusdepan() {
TNode *hapus;
if (isEmpty() == false){
if(head->next !=NULL){
hapus = head;
head = head->next;
delete hapus;
clrscr();
} else {
head = NULL;
}
}else {
cout<<"Data anda masih kosong !!!!\n";
}
}
void hapusbelakang(){
TNode *hapus, *bantu;
if (isEmpty()==false){
if(head->next !=NULL){
bantu = head;
while(bantu->next->next!=NULL){
bantu = bantu->next;
}
hapus = bantu->next;
bantu->next = NULL;
delete hapus;
clrscr();
} else {
head = NULL;
}
} else {
cout<<"Data anda masih kosong !!!!\n";
}
}
void hapustengah(){
int banyakdata,posisiSisip,poshapus;
TNode *hapus, *bantu;
if(isEmpty()== false){
cout<<" Akan dihapus pada data ke : "; cin>>posisiSisip;
banyakdata=1;
bantu=head;
while(bantu->next!=NULL)
{
bantu=bantu->next;
banyakdata++;
}
if((posisiSisip<1)||(posisiSisip>banyakdata)){
cout<<"Belum ada data !! …silahkan masukkan Data dula aja…..\n";
}else {
bantu=head;
poshapus=1;
while(poshapus<(posisiSisip-1))
{
bantu=bantu->next;
poshapus++;
}
hapus=bantu->next;
bantu->next=hapus->next;
delete hapus;
clrscr();
}
}
else cout<<"Data Masih kosong, tidak bisa hapus data dari tengah! ";
}
void display(){
clrscr();
TNode *bantu;
bantu = head;
if(isEmpty()==true){
cout<<"Data masih kosong\n";
} else {
cout<<endl<<"DATA LINKED LIST\n";
while(bantu!=NULL){
cout<<"--------------- "<<endl;
cout<<"DATA    : " << bantu->data << " ";
cout<<endl;
bantu=bantu->next;
cout<<"--------------- "<<endl;
}
cout<<endl;
}
}
void main(){
int();
do{
cout<<endl;
cout<<endl;
cout<<endl;
cout<<"-:: MENU PILIHAN::-"   <<endl;
cout<<endl;

cout<<"1. Tambah Simpul dari Depan."   <<endl;
cout<<"2. Tambah Simpul dari Belakang."   <<endl;
cout<<"3. Tambah Simpul dari Tengah."   <<endl;
cout<<"4. Hapus Simpul dari Depan."   <<endl;
cout<<"5. Hapus Simpul dari Belakang."   <<endl;
cout<<"6. Hapus Simpul dari Tengah."   <<endl;
cout<<"7. Tampil Data."   <<endl;
cout<<"8. Keluar."   <<endl;
cout<<endl;
cout<< "Pilihan Menu : ";
cin >> opsi;
switch(opsi){
case 1 : tambahdepan();break;
case 2 : tambahbelakang();break;
case 3 : tambahtengah();break;
case 4 : hapusdepan();break;
case 5 : hapusbelakang();break;
case 6 : hapustengah();break;
case 7 : display();break;
}
}while (opsi != 8);
}






Tampilan menu setelah di Run :


Pilih menu no 1 untuk menambah node depan :




Pilih menu no 2 untuk menambah node belakang :




Pilih menu no 3 untuk menambah node di tengah :


Tampilan setelah penambahan node di tengah :


Pilih no 6 untuk menghapus node di tengah :


Tampilan setelah di hapus node di tengah :




Single linked list merupakan suatu linked list yang hanya memiliki suatu variable pointer saja. Dimana 
pointer tersebut menujukan ke kode selanjutnya. Biasanya field pada tail menuju ke null.
https://drive.google.com/uc?export=download&id=0B_lb_P3Nsd8SaUZqeDR5a0o5dFU


Contoh gambar menambah node  dengan hide di posisi tengah : https://drive.google.com/uc?export=download&id=0B_lb_P3Nsd8SZFFDaVoyei05YkU

Contoh gambar menghapus node dengan head di posisi tengah : https://drive.google.com/uc?export=download&id=0B_lb_P3Nsd8SNDE2cW15NG4xZGM

Contoh gambar menambah node head dan tail di posisi tengah : https://drive.google.com/uc?export=download&id=0B_lb_P3Nsd8SSHhZRkZaVkpYd1U

Contoh gambar menambah node head dan tail di posisi tengah 2 : https://drive.google.com/uc?export=download&id=0B_lb_P3Nsd8SVG5rVVJLOHJ6SEU

Contoh gambar menghapus node head dan tail di posisi tengah : https://drive.google.com/uc?export=download&id=0B_lb_P3Nsd8STmFjTUxlVUhuOEU
Posted on by Bagus Iwang Kusuma R. | No comments