Rangkuman Mata Kuliah Struktur Data di kelas

Blog ini dibuat untuk memenuhi tugas akhir mata kuliah struktur data.
  • Nama         : Kurnia Sulaeman
  • Nim            : 6311059
  • Alamat       : Perum Abdi Negara Blok J2 No 18, Rancaekek, Bandung
  • Kelas         : 1 TI-05
  • Matakuliah : Struktur Data 
  • Dosen        : Dadan Nurdin Bagenda. ST

Pengertian Stuktur Data 
Struktur data adalah cara penyimpanan, penyusunan dan pengaturan data, sehingga data bisa digunakan lebih efisien

Gambar pemetaan struktur data :



Array & Pointer
  • Array adalah kumpulan data yang terdiri dari tipe data yang sama. Keunggulan variabel array dengan variabel biasa  adalah pada nomor indeksnya, karena variabel array memiliki nama & tipe data yang sama, maka nomor indeks dapat dimanfaatkan untuk digunakan pada perulangan sehingga lebih menghemat pengguna variabel.
Untuk melihat tampilan program dan source code Array, silahkan klik disini!

  • Pointer adalah variabel penunjuk / penampung alamat. Atau bisa juga dikatakan sebagai variabel yang berisi alamat memori dari variabel lain.

    Simbol Pointer yang dibaca diluar deklarasi :
    “ & ” : alamat dari ……
    “ * ” : Isi yang ditunjuk oleh ……
    “ = ” : di isi ……
Untuk melihat tampilan program dan source code Pointer, silahkan klik disini!

Linked List
Linked List adalah salah satu bentuk struktur data yang berisi kumpulan data (node) yang tersusun secara  dinamis, terbatas, dan saling sambung-menyambung.
Linked List sering juga disebut Senarai Berantai
Linked List saling terhubung dengan bantuan variabel pointer
Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis dan biasanya berupa struct yang terdiri dari beberapa field.


Untuk melihat tampilan program dan source code Linked List, silahkan klik disini!


Struktur Data Linear
   
   a) 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), sertasebuah field yang berisi data un tuk node tersebut. Double Linked List Circular pointer next dan prev nyamenunjuk ke dirinya sendiri secara circular.

  
   b) Double linked list Non Circular
Adalah sebuah linked list yang tidak berputar, jadi di kdua sisi double linked ist tersebut di isi dengan null.

   
   c) Single linked list Circular
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.


      d) Single Linked List Non Circular
 Single linked list non circular meliputi :

1. Tambah list :
Tambah list yaitu cara untuk menambahkan data, baik itu di depan, tengah, ataupun belakang.

  • Depan (LIFO)
    Tambah list depan adalah data yang pertama akan menjadi data yang kedua setelah datangnya data baru. Dan data baru akan menjadi data yang pertama.



  • Belakang (FIFO)
    Tambah list belakang adalah data yang pertama datang
    (data baru) akan menjadi data yang terakhir, maka data yang asalnya terakhir dia akan menjadi data yang kedua, dan data yang baru akan menjadi data yang terakhir.




  •  Tengah
    Tambah list tengah adalah data yang ditambahkan atau disisipkan di tengah (diantara data pertama dan data terakhir).




2. Hapus list :

Hapus List yaitu cara/metode penghapusan data, dimana data bisa kita hapus dari depan, tengah, belakang, ataupun semua.
  • DepanHapus List Depan adalah penghapusan data yang pertama/awal, yaitu data yang pertama akan terhapus, dan data yang pertama akan berpindah pada data yang kedua (data selanjutnya). Sehingga data kedua kini menjadi data pertama atau head.
  • Tengah
    Hapus List Tengah, adalah penghapusan dari posisi tengah, yaitu data yang berada ditengah akan dihapus.
  • BelakangHapus List Belakang, adalah penghapusan dari belakang, yaitu data terakhir akan terhapus dan secara otomatis data sebelumnya akan menjadi data yang terakhir atau ekor.
  • Semua
    Hapus List Semua adalah penghapusan data sekaligus (semuanya), sehingga semua data menjadi kosong.




Struktur data Non linear
a) Binary tree
Binary Tree adalah sebuah pohon struktur data dimana setiap simpul memiliki paling banyak dua anak. Secara khusus anaknya dinamakan kiri dan kanan.



b) Graph
Graph merupakan struktur data yang paling umum. Jika struktur linear memungkinkan pendefinisian keterhubungan sikuensial antara entitas data, struktur data tree memungkinkan pendefinisian keterhubungan hirarkis, maka struktur graph memungkinkan pendefinisian keterhubungan tak terbatas antara entitas data.

Contoh Tampilan Program & Source Code "Linked List" di C++

Tampilan Program Linked List













Berikut source code nya :

#include<constream.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
struct titik{
    char kode[4];
    char nama[15];
    int harga;
    int satuan;
    struct titik *berikut;
    };
struct barang{
    char kode[4];
    char nama[15];
    int harga;
    int satuan;
    };
struct titik *awal=NULL, *akhir=NULL;
void tambahlist(struct barang x);
void isilist();
void sisiplist(struct titik *first,struct barang x, char *posisi);
void sisipisi();
void tampillist();
void hapuslist();

void main()
{
clrscr();
int pilih;
do {
clrscr();
cout<<"Programmer : Kurnia Sulaeman\n\n";
cout<<"Menu\n";
cout<<"1. Isi List\n";
cout<<"2. Sisip List\n";
cout<<"3. Tampil List\n";
cout<<"4. Hapus List\n";
cout<<"5. Exit\n";
cout<<"Tentukan Pilihan : "; cin>>pilih;
switch(pilih){
    case 1 : isilist(); break;
    case 2 : sisipisi(); break;
    case 3 : tampillist(); break;
    case 4 : hapuslist(); break;
    case 5 : cout<<"Terimakasih Telah menggunakan Program ini"; break;
    default : cout<<"Inputan salah"; break;
    }
getch();
}
while(pilih!=5);
getch();
}

void tambahlist(struct barang x)
{
struct titik *baru;
baru= new titik;
strcpy(baru->kode, x.kode);
strcpy(baru->nama, x.nama);
baru->harga=x.harga;
baru->satuan=x.satuan;
if(awal==NULL)
 {
 awal=baru;
 }
 else
 {
 akhir->berikut=baru;
 }

akhir=baru;
akhir->berikut=NULL;
}

void isilist()
{
char jawab;
struct barang data;
do{
clrscr();
cout<<"Kode Barang : "; cin>>data.kode;
cout<<"Nama Barang : "; cin>>data.nama;
cout<<"Harga : "; cin>>data.harga;
cout<<"Satuan : "; cin>>data.satuan;
tambahlist(data);
cout<<"\nTambah Data (Y/T) : "; cin>>jawab;
}
while(toupper(jawab)!='T');
}

void sisiplist(struct titik *first,struct barang x, char *posisi)
{
struct titik *bantu, *baru;
baru = new titik;
strcpy(baru->kode, x.kode);
strcpy(baru->nama, x.nama);
baru->harga=x.harga;
baru->satuan=x.satuan;
bantu=first;
do{
if(strcmp(posisi,bantu->kode)!=0) {bantu=bantu->berikut;}
}
while(bantu!=NULL && strcmp(posisi, bantu->kode)!=0);
baru->berikut=bantu->berikut;
bantu->berikut=baru;

}


void sisipisi()
{
char *cari;
struct barang ganti;
cout<<"Disisipkan setelah kode barang : "; cin>>cari;
cout<<"Kode Barang : "; cin>>ganti.kode;
cout<<"Nama Barang : "; cin>>ganti.nama;
cout<<"Harga : "; cin>>ganti.harga;
cout<<"Satuan : "; cin>>ganti.satuan;
sisiplist(awal, ganti, cari);
}

void tampillist()
{
struct titik *baca;
int i;
baca = awal;
i = 1;
while(baca!=NULL){
    cout<<"\n\nData yang dibaca ke-"<<i;
    cout<<"\nKode Barang : "<<baca->kode;
    cout<<"\nNama Barang : "<<baca->nama;
    cout<<"\nHarga : "<<baca->harga;
    cout<<"\nSatuan : "<<baca->satuan;
    i++;
    baca=baca->berikut;
    }
}

void hapuslist()
{
struct titik *hapus;
hapus=awal;
while(hapus!=NULL){
    hapus=hapus->berikut;
    free(hapus);
    hapus=awal;
}
}

Contoh Tampilan Program & Source Kode "Pointer" di C++

Pointer








Berikut source code nya :

#include <stdio.h>
#include <conio.h>


void main()
{
    int x,y;
    int *px;         =>       /* px pointer yang menunjuk objek */
    clrscr();


    x= 87;
    px=&x;         =>       /* px berisi alamat dari x */
    y=*px;         =>       /* y berisi nilai yang ditunjuk px */


    printf (" Alamat x    = %p\n",&x);
    printf (" Isi px        = %p\n", px);
    printf (" Isi nilai x    = %d\n",x);
    printf (" Nilai yang ditunjuk oleh px = %d\n", *px);
    printf (" Nilai y        = %d\n",y);
    getch();
}

Contoh Tampilan Program & Source Kode "Array" di C++

Array 1 Dimensi




 Berikut Source Code nya :

#include<constream.h>

void main()
{


int a[5];
int x,y;
y=1;
clrscr();


 for (x=0;x<5;x++)
 {
 cout<<” Input Angka “<<” : “;cin>>x;
 }
 for (x=0;x<5;x++)
 {
 cout<<”\n Hasil : “;cout<<x;
 }
getch();
}



Array 2 Dimensi

 



















Berikut Source Code nya :


#include<constream.h>

void main()
{


int n[3][3], x,y;

clrscr();

for(x=0;x<=2;x++)
{
for(y=0;y<=2;y++)
{
cout<<"Masukkan angka pada baris ke "<<x<<" kolom ke "<<y<<" : ";
cin>>n[x][y];
}
cout<<endl;
}
for(x=0;x<=2;x++)
{
for(y=0;y<=2;y++)
{
cout<<n[x][y]<<" ";
}
cout<<endl;
}


getch();

}