ALIF AKBAR IRDHOBILLA UMSIDA

Rangkuman Algoritma dan Struktur Data

1 - 6


POKOK BAHASAN 1
STRUKTUR DATA, ARRAY, POINTER, DAN STRUKTUR
A.      Konsep Dasar Struktur Data
Struktur Data adalah sebuah bagian dari ilmu pemrograman dasar yang mempunyai karakteristik yang terkait dengan sifat dan cara penyimpanan sekaligus penggunaan atau pengaksesan data.
Struktur data bertujuan agar cara mempresentasikan data dalam membuat program dapat dilakukan secara efisien dalam pengolahan di memori dan pengolahan penyimpanan dari program ke storage juga lebih mudah dilakukan.
B.       Konsep Dasar Array 
     Array adalah kumpulan elemen-elemen data. Kumpulan elemen tersebut mempunyai susunan tertentu yang teratur. Jumlah elemen terbatas, dan semua elemen mempunyai tipe data yang sama. 
C.      Konsep Dasar Pointer
     Pointer adalah sebuah variabel yang berisi alamat variabel yang lain. Suatu pointer dimaksudkan untuk menunjuk ke satu alamat memori sehingga alamat dari satu variabel dapat diketahui dengan mudah.
D.     Konsep Dasar Struktur
      Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama, dengan sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur biasa dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah satu kesatuan

Contoh Program pangkat dengan array dimensi satu.

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

int main(){
            int square [100];
            int i;
            int k;
           
            for (i=0;i<10;i++)
            {
                        k=i+1;
                        square[i]=k*k;
                        printf("\n pangkat dari %d adalah %d",k,square[i]);
            }
            getch();
}
Hasil Output


POKOK BAHASAN 2
LINKED LIST
Linked List adalah objek atau elemen yang dihubungka satu dengan lainnya sehingga membentuk satu list. Sedangkan objek atau elemen itu sendiri adalah merupakan gabungan beberapa data (variabel) yang dijadikan satu kelompok atau structure atau record yang dibentuk segan perintah struct

Jenis-jenis linked list :
ü  List Kosong
List Kosong hanya terdiri dari sebuah petunjuk elemen yang berisi NULL (kosong), tidak memiliki satu buah elemen pun sehingga hanya berupa petunjuk awal elemen berisi NULL.
ü  List Tunggal
       List Tunggal adalah lis yang elemennya hanya menyimpan informasi elemen setelahnya (next), sehingga           jalannya pengaksesan list hanya dapat dilakukan secara maju. List tunggal terbagi tiga jenis yaitu lis               tunggal dengan kepala (First), list tunggal dengan kepala (First) dan ekor (Tail), serta lis tunggal yang             berputar.
ü  List Ganda
List Ganda adalah sebuah list yang elemennya menyimpan informasi elemen sebelumnya dan informasi elemen setelahnya, sehingga proses penelusuran list dapat dilakukan secara maju dan mundur. List ganda terbagi menjadi tiga jenis yaitu List ganda dengan kepala(First), list ganda dengan kepala(First) dan ekor(Tail), serta list ganda yang berputar.

1      Contoh program sisip senarai (linked list)

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

typedef struct nod{
            int data;
            struct nod *next;
           
}NOD,*NODPTR;
void Ciptasenarai(NODPTR *s)
{
            *s = NULL;
}
NODPTR NodBaru(int m){
            NODPTR n;
            n= (NODPTR) malloc
            (sizeof(NOD)); if (n != NULL)
            {
                        n->data=m;
                        n->next = NULL;
            }
            return n;
}
void SisipSenarai (NODPTR *s, NODPTR t,NODPTR p)
{
            if(p==NULL)
            {
                        t->next=*s;
                        *s=t;
            }
            else
            {
                        t->next=p->next;
                        p->next=t;
            }
}
void cetakSenarai(NODPTR s){
            NODPTR ps;
            for(ps=s; ps!=NULL; ps=ps->next)
            printf("%d --> ",ps->data);
            printf("NULL\n");
}
int main(){
            NODPTR pel;
            NODPTR n;
           
            Ciptasenarai(&pel);
            n=NodBaru(55);
            SisipSenarai(&pel,n,NULL);
           
            n=NodBaru(75);
            SisipSenarai(&pel,n,NULL);
            cetakSenarai(pel);
            getch();
}
Hasil Output

POKOK BAHASAN 3

STACK(TUMPUKAN)
Stack adalah kumpulan elemen-elemen yang tersimpan dalam suatu tumpukan. Aturan penyisipan dan penghapusan elemennya tertentu:
-Penyisipan selalu dilakukan “di atas” TOP
-Penghapusan  selalu dilakukan pada TOP
Karakteristik penting stack sebagai berikut:
1.    Elemen stack yaitu item-item data di elemen stack
2.    TOP (elemen puncak dari stack)
3.    Jumlah elemen pada stack
4.    Status/kondisi stack, yaitu:
-       Penuh
Bila elemen di tumpukan mencapai kapasitas maksimum tumpukan. Pada kondisi ini, tidak mungkin dilakukan penambahan ketumpukan. Penambahan di elemen menyebabkan kondisi kesalahan Overflow
-       Kososng
Bila tidak ada elemen tumpukan. Pada kondisi ini, tidak mungkin dilakukan pengambilan elemen tumpukan. Pengambilan elemen menyebabkan kondisi kesalahan Underflow.
1      Contoh Program Stack
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <iostream>

#define MAXSTACK 3
typedef int itemType;
typedef struct
{
int item [MAXSTACK];
int jml;                                                                
}Stack;
void init (Stack *s)
{
s->jml=0;
}
int kosong (Stack *s)
{
return(s->jml==0);
}
int penuh (Stack *s)
{
return (s->jml==MAXSTACK);
}
void isi(itemType x,Stack *s)
{
if(penuh(s))
printf("\nmaaf data penuh\n");
else{
s->item[s->jml]=x;
++(s->jml);
}
}
void ambil (Stack *s,itemType *x){
if(kosong(s))
printf("\nmaaf data kosong\n");
else
{
--(s->jml);
*x=s->item[s->jml];
s->item[s->jml]=0;
printf("\ndata %i berhasil diambil\n",*x);
}
}
void tampil(Stack *s){
if(kosong(s))
printf("\n maaf data masih kosong\n");
else
printf("\n");
for(int i=s->jml-1;i>=0;i--){
printf("Data : %d\n",s->item[i]);
}
}
void hapus (Stack *s){
s->jml=0;
printf("\nSemua data berhasil dihapus\n");
}
main(){
int pil;
Stack tumpukan;
itemType data;
init(&tumpukan);
do{
printf("\n Menu : \n 1. isi(data angka) \n 2. Ambil\n 3. Lihat \n 4.hapus (Hapus semua data)\n 5.keluar\n");
printf("\n");
printf("Masukkan Pilihan : ");scanf("%i",&pil);
switch(pil){
case 1:
printf("\n Masukkan Data Angka : ");scanf("%i",&data);isi(data,&tumpukan);
break;
case 2:
ambil(&tumpukan,&data);
break;
case 3:                                                                
tampil(&tumpukan);
break;
case 4 :
hapus(&tumpukan);
break;                                                                         
}                                                                         
}
while(pil!=5);
getch();
}
dHasil Output

POKOK BAHASAN 4

QUEUE(ANTRIAN)

Antrian adalah salah satu kumpulan data yang penambahan elemennya hanya bisa dilakukan pada suatu ujung (disebut sisi belakang atau REAR), dan penghapusan atau pengambilan elemen dilakukan lewat ujung yang lain (disebut sisi depan atau front).prinsipyang digunakan dalam antrian  ini adalah FIFO (First in first out) yaitu elemen yang pertama kali masuk akan keluar pertama kalinya.

Contoh Program Queue Statis
#include <queue>
#include <iostream>
#include <conio.h>

using namespace std;
int main()
{
            queue<int> que;
            que.push(10);
            que.push(2);
            que.push(3);
            cout<<"Paling depan : "<<que.front()<<endl;
            cout<<"Paling Belakang : "<<que.back()<<endl;
            que.pop();
            cout<<"10 sudah di keluarkan"<<endl;
            cout<<"Paling depan : "<<que.front()<<endl;
            cout<<"Paling belakang : "<<que.back()<<endl;
            que.push(6);
            cout<<"angka 6 dimasukkan"<<endl;
            cout<<"paling depan : "<<que.front()<<endl;
            cout<<"Paling belakang : "<<que.back()<<endl;
            _getch;
}
Hasil Output

POKOK BAHASAN 5

REKURSIF

Fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri, artinya fungsi tersebut dipanggil di dalam tubuh fungsi itu sendiri. Contoh menghitung nilai faktorial. Rekursif sangat memudahkan untuk memecahkan permasalahan yang kompleks. Sifat-sifat rekursif:
·      Dapat digunakan ketika inti dari masalah terjadi  berulang kali.
·      Sedikit lebih efisien dari iterasi tapi lebih elegan.
·      Method-methodnya dimungkinkan untuk memanggil dirinya sendiri.
Data yang berada dalam method tersebut seperti argument disimpan sementara ke dalam stack sampai method pemanggilnya diselesaikan.

Contoh Program bilangan genap dan bilangan ganjil.
#include <iostream>
#include <conio.h>
using namespace std;
void odd (int a);
void even(int a);
int main(void)
{
      int i;
      do
      {
                  cout<<"Masukkan Bilangan 1 - 9 (0 untuk keluar) : \n";
                  cin>>i;
                  odd(i);
                  cout<<endl;
      }
      while (i!=0);
      getch();
}
void odd(int a)
{
      if ((a%2) !=0) cout << "Bilangan GANJIL \n";
      else
                  even (a);
}
void even(int a)
{
      if ((a%2) ==0) cout << "Bilangan GENAP \n";
      else
                  odd (a);
}

Hasil Output

POKOK BAHASAN 6

SORTING(PENGURUTAN)

Pengurutan data (sorting) didefinisikan sebagai suatu proses untuk menyusun kembali himpunan obyek menggunakan aturan tertentu. Ada dua macam urutan yang biasa digunakan dalam proses pengurutan yaitu:
v Urutan naik (ascending) yaitu dari data yang mempunyai nilai paling kecil sampai paling besar.
v Urutan turun (descending) yaitu dari data yang mempunyai nilai paling besar sampai paling kecil.
Contoh program ascending dengan menggunakan bubble sort
#include <iostream>
#include<conio.h>
#include<iomanip>
using namespace std;
int main()
{
     int dataku[]={5,34,32,25,75,42,2};
     int adaPertukaran;
     int n;
     cout<<"Data Belum diurutkan : \n";  
     for(int ctr = 0;ctr<7;ctr++)
     {
                 cout<<setw(3)<<dataku[ctr];
     }
     cout<<endl<<endl;
     //pengurutan
     do{
                 adaPertukaran = 0;
                 for(int i=0;i<7-1;i++){
                             if(dataku[i+1]<dataku[i]){
                                         n=dataku[i];
                                         dataku[i]=dataku[i+1];
                                         dataku[i+1]=n;
                                         adaPertukaran=1;                               
                             }
                 }
     }while(adaPertukaran==1);
     //menampilkan hasil pengurutan
     cout<<"Data SETELAH diurutkan : \n";
     for(int i =0;i<7;i++){
                 cout<<dataku[i];
                 cout<<" ";
     }
     _getch();
}

Hasil Output

Jangan Lupa Kunjungi Juga



Komentar