Pengertian
Dalam istilah ilmu
komputer, sebuah struktur data adalah cara penyimpanan, penyusunan
dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut
dapat digunakan secara efisien.
Dalam teknik pemrograman, struktur data berarti tata letak
data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user)
atau pun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak
tampak oleh pengguna. Setiap baris dari kumpulan kolom-kolom tersebut dinamakan
catatan (record). Lebar kolom untuk data dapat berubah dan bervariasi.
Ada kolom yang lebarnya berubah secara dinamis sesuai masukan dari pengguna,
dan juga ada kolom yang lebarnya tetap. Dengan sifatnya ini, sebuah struktur
data dapat diterapkan untuk pengolahan database (misalnya untuk keperluan data
keuangan) atau untuk pengolah kata (word processor) yang kolomnya
berubah secara dinamis. Contoh struktur data dapat dilihat pada berkas-berkas
lembar-sebar (spreadsheet), pangkal-data (database), pengolahan
kata, citra yang dipampat (dikompres), juga pemampatan berkas dengan teknik
tertentu yang memanfaatkan struktur data.
Type data
sederhana
a. Type data sederhana tunggal, misalnya
Integer, real, boolean dan karakter
b. Type data sederhana majemuk, misalnya
String
Struktur Data, meliputi
a. Struktur data sederhana, misalnya
array dan record
b. Struktur data majemuk, yang terdiri
dari
Linier : Stack, Queue, serta List dan
Multilist
Non
Linier : Pohon Biner dan Graph
Inisialisai struktur Data
Dalam ilmu komputer, stack
atau tumpukan merupakan sebuah koleksi objek yang menggunakan prinsip
LIFO (Last In First Out), yaitu data yang terakhr kali dimasukkan akan pertama
kali keluar dari stack tersebut. Stack dapat diimplementasikan sebagai representasi
berkait atau kontigu (dengan tabel fix). Ciri Stack :
- Elemen
TOP (puncak) diketahui
- penisipan
dan penghapusan elemen selalu dilakukan di TOP
- LIFO
Pemanfaatan
Stack :
- Perhitungan
ekspresi aritmatika (posfix)
- algoritma
backtraking (runut balik)
- algoritma
rekursif
Operasi
Stack yang biasanya :
- Push
(input E : typeelmt, input/output data : stack): menambahkan
sebuah elemen ke stack
- Pop
(input/output data : stack, output E : typeelmt ) :
menghapus sebuah elemen stack
- IsEmpty
()
- IsFull
()
- dan
beberapas selektor yang lain.
Secara
bahasa, Stack berarti tumpukan. Jika dikaitkan dengan struktur data, Stack
berarti sekumpulan data yang organisasi atau strukturnya bersifat tumpukan atau
menyerupai tumpukan.
Secara
ilustrasi, stack dapat digambarkan dengan gambar di samping.
“Top “
merupakan pintu untuk keluar masuknya elemen – elemen stack. A, B, dan C
merupakan suatu koleksi. Dari ilustrasi dapat digambarkan bahwa C merupakan
elemen yang terakhir memasuki stack namun pertama keluar dari stack. Begitu
sebaliknya dengan A. A merupakan elemen pertama yang memasuki tumpukan namun
terakhir saat keluar dari tumpukan.
Di dalam
gambar juga terlihat urutan masuk dan keluar yang berkebalikan. Elemen yang
masuk pertama akan keluar erakhir dan sebaliknya. Prinsip ini telah dikenal
dalam struktur data dengan nama prinsip LIFO (Last In First Out).
Di dalam
pengembangannya, stack dapat dikelompokkan menjadi dua bagian. Dua bagian
tersebut yaitu Single Stack dan Double Stack.
Single Stack
Single Stack
atau Stack Tunggal adalah stack yang hanya terdiri dari satu koleksi. Bila
stack ini direpresentasikan dengan array, maka pengisian dan penghapusan harus
dilakukan bertahap dari indeks TOP-nya.
Di dalam
proses single stack terdapat tiga macam proses utama, yaitu :
-
Inisialisasi
-
PUSH (Insert, Masuk, Simpan, Tulis)
-
POP (Delete, Keluar, Ambil, Baca, Hapus)
INISIALISASI
Proses
inisialisasi merupakan proses awal yang dilakukan untuk menyimpan indeks
penunjuk stack. Roses ini dilakukan dengan intruksi :
top = -1;
|
PUSH
Proses push
adalah proses memasukkan data baru ke stack indeks selanjutnya. Algoritma dasar
proses PUSH adalah :
top = top
+ 1;
array[top]
= variable_tampung;
|
POP
Proses pop
adalah proses mengeluarkan / mengambil data dari stack dengan indeks yang
disimpan pada variable top. Algoritma dasar proses POP adalah :
variable_tampung
= array[top];
top = top
– 1;
|
Double
Stack
Double Stack
atau Stack Ganda adalah stack yang hanya terdiri dari dua single stack. Bila
stack ini direpresentasikan dengan array, maka pengisian dan penghapusan harus
melalui salah satu arah.
Di dalam
proses double stack terdapat lima macam proses utama, yaitu :
-
Inisialisasi
-
PUSH1 (Proses Push untuk Single Stack pertama)
-
POP1 (Proses Pop untuk Single Stack pertama)
-
PUSH2 (Proses Push untuk Single Stack kedua)
-
POP2 (Proses Pop untuk Single Stack kedua)
Algoritma
dasar masing – masing proses adalah sebagai berikut :
INISIALISASI
|
top1 = -1;
top2 =
MAX_ARRAY;
|
PUSH1
|
top1 =
top1 + 1;
array[top1]
= variable_tampung;
|
POP1
|
variable_tampung
= array[top1];
top1 =
top1 – 1;
|
PUSH2
|
top2 =
top2 – 1;
array[top2]
= variable_tampung;
|
POP2
|
variable_tampung
= array[top2];
top2 =
top2 + 1;
|
Menginisialisasi Larik
menginisialisasi elemen larik
adalah memberikan harga awal untuk
seluruh elemen larik, misalnya:
·
menginisialisasi dengan nilai 0
seperti di bawah ini :
Procedure InisDgn0(output
A:larik, input N:integer)
{menginisialisasi setiap elemen
larik A[1..N] dengan nol}
{K. Awal : N adalah banyak elemen
efektif larik,
nilainya terdefinisi}
{K. Akhir : seluruh elemen larik
A bernilai nol}
Deklarasi :
K : integer
Deskripsi :
for k Ã… 1 to N do
A[k] Ã… 0
Endfor
Kaitan antara array dengan struktur data
Dalam ilmu
komputer , struktur data array atau hanya array
adalah struktur
data
yang terdiri dari kumpulan elemen yang serupa ( nilai atau variabel ),
masing-masing diidentifikasi dengan satu atau lebih integer indeks ,
disimpan sehingga alamat dari
setiap elemen dapat dihitung dari perusahaan Indeks tuple dengan
rumus matematika sederhana.
Array adalah yang paling penting data
struktur dan tertua, dan digunakan oleh hampir setiap program dan digunakan
untuk menerapkan struktur data lainnya, seperti daftar dan string . Mereka secara efektif memanfaatkan
mesin pengalamatan komputer, memang, di komputer paling modern (dan banyak penyimpanan eksternal perangkat), memori
adalah sebuah array satu dimensi dari kata-kata yang indeks adalah mereka. alamat, Prosesor , terutama prosesor vektor , sering dioptimalkan untuk array
operasi.
Array adalah
salah satu struktur data sederhana dan paling banyak digunakan dalam program
komputer. Array dalam bahasa pemrograman semua berbagi beberapa sifat-sifat
umum: - Isi
array disimpan dalam memori yang berdekatan.
- Semua
elemen array harus dari tipe yang sama atau dari tipe turunan, maka array
yang disebut struktur data sebagai homogen.
- elemen
Array dapat langsung diakses. Dengan array jika Anda tahu bahwa Anda ingin
mengakses elemen ke-i, Anda cukup menggunakan satu baris
kode: arrayName [i].
Operasi yang
umum dilakukan pada array adalah:
- Alokasi
- Mengakses
Mendeklarasikan
array: (awalnya akan memiliki nilai null)
Struktur
data adalah format khusus untuk mengatur dan menyimpan beberapa data. Umumnya
Struktur Data meliputi jenis array, file, record, meja, pohon, dan sebagainya.
Data yang tersimpan dalam antrian adalah sebenarnya disimpan dalam array.
Dua indeks, depan dan akhir akan digunakan untuk mengidentifikasi awal dan
akhir antrian.
Ketika suatu elemen dihapus depan akan bertambah 1. Dalam hal mencapai masa lalu indeks terakhir yang tersedia itu akan direset ke 0. Maka akan diperiksa dengan akhir. Jika lebih besar dari akhir antrian kosong.
Ketika suatu elemen ditambahkan akhir akan bertambah 1. Dalam hal mencapai masa lalu indeks terakhir yang tersedia itu akan direset ke 0. Setelah incrementing itu akan diperiksa dengan depan. Jika mereka sama penuh antrian.
Ketika suatu elemen dihapus depan akan bertambah 1. Dalam hal mencapai masa lalu indeks terakhir yang tersedia itu akan direset ke 0. Maka akan diperiksa dengan akhir. Jika lebih besar dari akhir antrian kosong.
Ketika suatu elemen ditambahkan akhir akan bertambah 1. Dalam hal mencapai masa lalu indeks terakhir yang tersedia itu akan direset ke 0. Setelah incrementing itu akan diperiksa dengan depan. Jika mereka sama penuh antrian.
Kaitan antara pointer dengan
struktur data
pointer adalah referensi memori ke struktur data. Jadi, ketika Anda
mengalokasikan memori untuk elemen daftar Anda, mereka akan disimpan di alamat
beberapa X dalam memori sistem anda. Sebuah pointer hanyalah sebuah variabel
yang berisi alamat X. Anda dapat mengakses memori yang poin pointer oleh
dereferrencing dengan operator *.
Ex:
int main ()
{
LinkedList * x; / * Deklarasi pointer ke linked list (tipe yang akan Anda harus mendefinisikan menggunakan "struct" atau "kelas") * /
x = LinkedList baru (); / * Disini kita membuat (alias "instantiate") objek LinkedList dan mengalokasikan memori untuk itu, x sekarang berisi (menunjuk) alamat memori * objek LinkedList kami /
/ / Anda sekarang dapat mengakses setiap anggota LinkedList melalui x, misalnya x-> berikutnya mungkin mengarahkan Anda ke elemen berikutnya LinkedList anda
Ex:
int main ()
{
LinkedList * x; / * Deklarasi pointer ke linked list (tipe yang akan Anda harus mendefinisikan menggunakan "struct" atau "kelas") * /
x = LinkedList baru (); / * Disini kita membuat (alias "instantiate") objek LinkedList dan mengalokasikan memori untuk itu, x sekarang berisi (menunjuk) alamat memori * objek LinkedList kami /
/ / Anda sekarang dapat mengakses setiap anggota LinkedList melalui x, misalnya x-> berikutnya mungkin mengarahkan Anda ke elemen berikutnya LinkedList anda
Penggunaan Pointer di Struktur
Program C berikut
menggambarkan penggunaan pointer dalam struktur.
# Include
<string.h>
# Include
<stdio.h>
# Include
<stdlib.h>
struct Rekam
{
char * nama;
char * alamat;
pin lama;
};
/ * Fungsi
ini akan digunakan untuk mengurutkan daftar sesuai dengan jenis variabel array
name.structure akan dibuat dan alamat lokasi pertama dan jumlah lokasi,
berarti catatan akan dilewatkan sebagai argumen .* /
void sort
(struct * Record str, int n)
{
int i, j;
struct Rekam temp;
untuk (i = 0; i <n; i + +)
{
for (j = i +1; n <j; j + +)
{
if (strcmp (str [i],. nama str [j]. nama)> 0)
{
temp = str [i];
str [i] = str [j];
str [j] = temp;
}
}
}
}
void main ()
{
char pilihan;
int i, n = 0;
struct Record string [10];
clrscr ();
printf ("Input List \ n");
printf ("\ n ************** \ n");
melakukan
{
string [n]). nama = char (*) malloc (50 * sizeof (char);
string [n]). alamat = char (*) malloc (100 * sizeof (char);
printf
("Nama:");
mendapat
(string [n] nama.);
printf
("\ n Alamat:");
mendapat
(string [n] alamat.);
printf
("Pin Code:");
scanf
("% ld", & string [n] pin.);
n + +;
fflush
(stdin);
printf
("\ n Input lain y / n?");
pilihan =
getchar ();
fflush
(stdin);
} While
(pilihan '==' y);
printf ("n Unsorted \ daftar");
printf
("\ n ******************** \ n");
untuk (i =
0; i <n; i + +)
{
printf
("\ n% s", string [i] nama.);
printf
("\ n% s", string [i] alamat.);
printf
("\ n% ld", string [i] pin.);
printf
("\ n ******************** \ n");
}
getch ();
sort (string,
n);
printf
("\ n daftar Diurutkan");
printf
("\ n ******************** \ n");
untuk (i =
0; i <n; i + +)
{
printf
("\ n% s", string [i] nama.);
printf
("\ n% s", string [i] alamat.);
printf
("\ n% ld", string [i] pin.);
printf
("\ n ******************** \ n");
}
getch ();
}
Comments
Post a Comment