Daftar Blog Saya

Sabtu, 03 Oktober 2020

TUGAS MATA KULIAH STRUKTUR DATA Pertemuan Ke-17 " Circular Doubly Linked List "

Bismillah, 

Assalamualaikum Wr.Wb.


Hello My Name Is Alif Yoga Prasetya 😉

Disini Saya Akan Membagikan Tugas Perkuliahan Dengan Mata Kuliah " Struktur Data "



  •  Circular Doubly Linked List

Circular Doubly Linked List adalah sederetan elemen yang saling berhubungan satu dengan yang lain, dimana pointer kiri simpul pertama menunjuk simpul terakhir dan pointer kanan simpul terakhir menunjuk simpul pertama. Semua simpul berhak menjadi simpul pertama. Jika suatu simpul dibuat menjadi simpul depan maka simpul yang ada di sebelah kiri merupakan simpul belakang.

    Pendeklarasian simpul untuk Circular Doubly Linked List sama dengan pendeklarasian pada Doubly Linked List. Operasi yang ada pada Doubly Linked List juga berlaku pada Circular Doubly Linked List, hanya saja pada Circular tidak mengandung NULL,




    Circular Doubly Linked List adalah Linked List dimana link simpul terakhir bukan diisi dengan null, tetapi diisi dengan alamat simpul pertama yaitu simpul yang ditunjuk oleh pointer FIRST, sehingga menciptakan efek melingkar’ sesuai arah jarum jam’. 

_ Pointer RIGHT simpul paling kanan berisi alamat simpul paling kiri

_ Pointer LEFT simpul paling kiri berisis alamat simpul paling kanan


LATIHAN PROGRAM :
 
 
    Buat program animasi Circular Doubly Linked List untuk mengelola data mahasiswa dengan struktur mahasiswa sbb : NAMA, NIM, GENDER, NILAI . Data terurut naik berdasarkan NIM. Program dibuat dalam bentuk menu dengan pilihan : INSERT DATA, HAPUS DATA, CETAK DATA, EXIT.

Keterangan :

INSER DATA : menambah data
HAPUS DATA : menghapus satu data berdasarkan kriteria NIM
CETAK DATA : mencetak seluruh isi linked list
EXIT : Keluar/selesai

Tampilan menu :
 
CIRCULAR DOUBLY LINKED LIST
==========================
1. INSERT DATA
2. HAPUS DATA
3. CETAK DATA
4. EXIT
Pilihan (1 – 4) :




SOURCE CODE PROGRAM 

#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>//mendukung format system("CLS") sebagai peganti clrscr()
using namespace std;

int pilih; void pilihan();
void insert_data();
void hapus_data();
void cetak_data();
struct node
{
 int nomorinduk;
 char nama [40];
 char gender [20];
 float nilai;
 node *prev, *next;
};
node *baru, *head=NULL, *tail=NULL,*help,*del;
main()//interface monitor
{
 do
 {
  system("cls");
  cout<<"\tLIN. DOUBLY LINKED LIST"<<endl;
  cout<<"\t=========================="<<endl;
  cout<<"\t1. INSERT DATA"<<endl;
  cout<<"\t2. HAPUS DATA"<<endl;
  cout<<"\t3. CETAK DATA"<<endl;
  cout<<"\t4. EXIT"<<endl;
  cout<<"\tPilihan (1 - 4) : ";
  cin>>pilih;
  cout<<endl<<endl;
  pilihan();
  cout<<"==============================="<<endl;
 }
 while(pilih!=4);
}
void pilihan()//fungsi "pilihan" untuk pemrosesan
{
 if(pilih==1)
 insert_data();
 else if(pilih==2)
 hapus_data();
 else if(pilih==3)
 cetak_data();
 else
 {
  cout<<"EXIT";
  cout<<"\nSampai Jumpa lagi"<<endl;
 }
}
void buat_baru()//fungsi membuat data baru
{
 baru = new(node);
 cout<<"Masukkan Nomor Induk : ";cin>>baru->nomorinduk;
 cout<<"Masukkan Nama : ";cin>>baru->nama;
 cout<<"Masukkan Gender : ";cin>>baru->gender;
 cout<<"Masukkan Nilai : ";cin>>baru->nilai;
 cout<<"\n\t---Data telah dimasukkan---";
 cout<<"\n\nPRESS ENTER TO CONTINUE...";
 getch();
 baru->prev=NULL;
 baru->next=NULL;
}
void insert_data()
{
 buat_baru();
 if(head==NULL)
 {
  head=baru;
  tail=baru;
 }
 else
 {
  baru->next=head;
  head->prev=baru;
  head=baru;
 }
 cout<<endl<<endl;
}
void hapus_data()//fungsi penghapusan data
{
 int hapus,nomorinduk;
 if(head==NULL)
 {
  cout<<"\nLinked List kosong, \nPenghapusan tidak dapat dilakukan"<<endl;//data yang habis maka tampilannya
 }
 else
 {
  hapus=head->nomorinduk;
  cout<<"\nData yang dihapus adalah ";//pemilihan data yang akan dihapus
  cin>>nomorinduk;
  del = head;
  head = head->next;
  delete del;
 }
}
void cetak_data()
{
 if (head==NULL)
 cout<<"\nData tidak dapat ditemukan!"<<endl;//data yang kosong
 else
 {
  help=head;
  while(help!=NULL)
  {
   cout<<" Nomor Induk : "<<help->nomorinduk;//data akan muncul dengan tampilan
   cout<<" Nama : "<<help->nama;
   cout<<" Gender : "<<help->gender;
   cout<<" Nilai : "<<help->nilai<<endl;
   help=help->next;
  }
 }
getch();
}


TAMPILAN OUTPUT



  • INPUT DATA KE-1





  • INPUT DATA KE-2





  • INPUT DATA KE-3





  • CETAK DATA





  • HAPUS DATA





  • TAMPILAN DATA SETELAH DIHAPUS





  • EXIT




Wa'alaikumussalam Warahmatullahi Wabarakatuh😎










TUGAS MATA KULIAH STRUKTUR DATA PERTEMUAN KE-16 " CIRCULAR LINKED LIST "

Bismillah, 

Assalamualaikum Wr.Wb.


Hello My Name Is Alif Yoga Prasetya 😉

Disini Saya Akan Membagikan Tugas Perkuliahan Dengan Mata Kuliah " Struktur Data "



    Linked List atau dikenal juga dengan sebutan senarai berantai adalah struktur data yang terdiri dari urutan record data dimana setiap record memiliki field yang menyimpan alamat/referensi dari record selanjutnya (dalam urutan). Elemen data yang dihubungkan dengan link pada Linked List disebut Node. Biasanya didalam suatu linked list, terdapat istilah head dan tail.

  • Head adalah elemen yang berada pada posisi pertama dalam suatu linked list
  • Tail adalah elemen yang berada pada posisi terakhir dalam suatu linked list

Ada beberapa macam Linked List, yaitu :

  1. Single Linked List
  2. Double Linked List
  3. Circular Linked List
  4. Multiple Linked List

Single Linked List

    Single Linked List merupakan suatu linked list yang hanya memiliki satu variabel pointer saja. Dimana pointer tersebut menunjuk ke node selanjutnya. Biasanya field pada tail menunjuk ke NULL.

contoh :

 



contoh codingannya :

 struct Mahasiswa{

      char nama[25];

      int usia;

      struct Mahasiswa *next;

}*head,*tail;

 

Double Linked List

    Double Linked List merupakan suatu linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunjuk ke node sebelumnya. Setiap head dan tailnya juga menunjuk ke NULL.

 

contoh :

 


 
 

contoh codingannya :


struct Mahasiwa{

     char nama[25];

     int usia;

     struct Mahasiswa *next,*prev;

}*head,*tail;

 

Circular Linked List

    Circular Linked List merupakan suatu linked list dimana tail (node terakhir) menunjuk ke head (node pertama). Jadi tidak ada pointer yang menunjuk NULL. Ada 2 jenis Circular Linked List, yaitu :

 

Circular Single Linked List

 


 
 

Circular Double Linked List

  


 

 

Multiple Linked List

 

    Multiple Linked List merupakan suatu linked list yang memiliki lebih dar 2 buat variabel pointer. 

contoh :

  





Contoh Program :


#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
using namespace std;
 
int pilih; void pilihan();
 
struct SIMPUL{
 char nim[20];
 char nama [40];
 char gender [20];
 int info;
 float nilai;
 SIMPUL *prev, *next;
};
 
SIMPUL *data, *front=NULL*rear=NULL,*help,*del, *q;
 
void BUAT_SIMPUL(int X)
{
data=(SIMPUL *)malloc(sizeof(SIMPUL));
if(data!=NULL)
data->info=X;
else
{
cout<<"Membuat simpul gagal";
exit(1);
}
}
 
void buat_data()//fungsi membuat data data
{
 data = new(SIMPUL);
 cout<<"    Masukkan Nama : ";cin>>data->nama;
 cout<<"    Masukkan NIM : ";cin>>data->nim;
 cout<<"    Masukkan Gender : ";cin>>data->gender;
 cout<<"    Masukkan Nilai : ";cin>>data->nilai;
 cout<<"\n  ==========================";
 cout<<"\n    Data telah dimasukkan   ";
 getch();
  data->prev=NULL;
 data->next=NULL;
}
 
void insert_data()
{
 buat_data();
 if(front==NULL)
 {
  front=data;
  rear=data;
  rear->next=NULL;
 }
 else
 {
 
  rear->next=data;
  rear=data;
  rear->next=NULL;
 }
 cout<<endl<<endl;
}
 
void hapus_data()//fungsi penghapusan data
{
 int hapus;
 if(front==NULL)
 {
  cout<<"   stack  kosong"<<endl;
  getch();
 }
 else
 {
  hapus=front->info;
  cout<<"   Data awal sudah dihapus";
  del = front;
  q = front->next;
  front=q;
  delete del;
  getch();
 }
}
 
void cetak_data()
{
 if (rear==NULL){
 cout<<"    Linked List kosong!";
 getch();
 }
 else
 {
  help=front;
  while(help!=NULL)
  {
   cout<<"  Nama : "<<help->nama<<endl;
   cout<<"  NIM : "<<help->nim<<endl;//data akan muncul dengan tampilan
   cout<<"  Gender : "<<help->gender<<endl;
   cout<<"  Nilai : "<<help->nilai<<endl;
   cout<<endl;
   help=help->next;
 
 }
getch();
 
}
}
 
int main()//interface monitor
{
 do
 {
  system("cls");   
  cout<<"   STACK LINKED LIST WITH HEAD"<<endl;
  cout<<"   ============================="<<endl;
  cout<<"   1. INSERT DATA"<<endl;
  cout<<"   2. HAPUS DATA"<<endl;
  cout<<"   3. CETAK DATA"<<endl;
  cout<<"   4. EXIT"<<endl;
  cout<<"   ============================="<<endl;
  cout<<"   Pilihan : ";
  cin>>pilih;
  cout<<"   ============================="<<endl;
  cout<<endl;
  pilihan();
 }
 
 while(pilih!=4);
}
    void pilihan()//fungsi "pilihan" untuk pemrosesan
    {
    if(pilih==1){
     insert_data();}
 
    else if(pilih==2)
       hapus_data();
       
    else if(pilih==3)
       cetak_data();
       
    else
     {
     cout<<"    Yeay Sudah Selesai, See You Again "<<endl;
      }



TAMPILAN OUTPUT

INPUT DATA KE-1


INPUT DATA KE-2


INPUT DATA KE-3


CETAK DATA


HAPUS DATA


TAMPILAN DATA SETELAH DIHAPUS


EXIT 

Wa'alaikumussalam Warahmatullahi Wabarakatuh 😎














TUGAS STRUKTUR DATA PERTEMUAN KE-4 " STACK (TUMPUKKAN) "

Bismillah,  Assalamualaikum Wr.Wb. Hello My Name Is Alif Yoga Prasetya 😉 Disini Saya Akan Membagikan Tugas Perkuliahan Dengan Mata Kuliah ...