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
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
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
Posting Komentar