Array, Matrix dan Vektor

07.55.00

ﺑﺴﻢﷲﺍﻠﺮﺤﻤﻦﺍﻠﺮﺤﻴﻢ





TUGAS 1 STRUKTUR DATA





Oleh : 

         NAMA          : SITI MAHMUDAH 
NIM : 11520241013 


PENDIDIKAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA 
2012 



1. Buatlah uraian tentang Array, Vektor dan Matriks mencakup:

a) Array adalah sekelompok data sejenis yang disimpan ke dalam variabel dengan nama yang sama dan diberi index untuk membedakan antara yang satu dengan yang lain.
b) Vektor adalah array berdimensi satu yang bisa menampung data jenis numerik, karakter atau logika
c) Matriks adalah array berdimensi dua yang unsur-unsurnya mempunyai tipe yang sama.

2. Karakteristik masing-masing struktur data

Karakteristik array
a) Mempunyai batasan dari pemesanan alokasi memori (bersifat statis)
b) Mempunyai tipe data sama (bersifat homogen)
c) Dapat diakses secara acak.
d) Logic maupun fisik sama

Karakteristik Vektor
a) Sama seperti array bersifat homogen
Karakteristik Matrix
a) Terdiri dari kolom dan baris

3. Jenis masing-masing struktur  data
Struktur Data Sederhana
a) Array(Larik)

Larik adalah struktur data statik yang menyimpan sekumpulan elemen yang bertipe sama. Setiap elemen diakses langsung melalui indeksnya. Indeks larik harus tipe data yang menyatakan keterurutan misalnya integer atau karakter. Banyaknya elemen larik harus sudah diketahui sebelum program dieksekusi. Tipe elemen larik dapat berupa tipe sederhana, tipe terstruktur, atau tipe larik lain. Nama lain array adalah Larik, tabel, atau vektor

b) Record(Catatan)
ADT adalah definisi tipe dan sekumpulan primitif (operasi dasar) terhadap tipe tersebut. Tipe diterjemahkan menjadi tipe terdefinisi dalam bahasa pemrograman yang bersangkutan.

Struktur Data Majemuk
a) Linier

Stack(Tumpukan)
Stack (tumpukan) adalah list linier yang dikenali elemen puncaknya (top), aturan penyisipan dan penghapusan elemennya tertentu (penyisipan selalu dilakukan “di atas” (top), penghapusan selalu dilakukan pada top). Karena aturan penyisipan dan penghapusan semacam itu, top adalah satu-satunya alamat tempat terjadi operasi. Elemen yang ditambahkan paling akhir akan menjadi elemen yang akan dihapus. Dikatakan bahwa elemen stack akan tersusun secara LIFO (Last In First Out).

Queue (Antrian)
Queue (antrian) adalah list linier yang dikenali elemen pertama (head) dan elemen terakhirnya (tail); Aturan penyisipan dan penghapusan elemennya disefinisikan sebagai penyisipan selalu dilakukan setelah elemen terakhir, penghapusan selalu dilakukan pada elemen pertama; Satu elemen dengan elemen lain dapat diakses melalui informasi next.

List dan Multi-List (Daftar)
List linier adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian. sebuah list linier dikenali dengan (1) elemen pertamanya, biasanya melalui alamat elemen pertama yang disebut (first); (2) Alamat elemen berikutnya (suksesor), jika kita mengetahui alamat sebuah elemen, yang dapat diakses melalui field next; (3) Setiap elemen mempunyai alamat, yaitu tempat elemen disimpan dapat diacu. Untuk mengacu sebuah elemen, alamat harus terdefinisi. Dengan alamat tersebut informasi yang tersimpan pada elemen list dapat diakses; (4) Elemen terakhirnya.

b) Non-Linier
Binary Tree (Pohon Biner)
Sebuah pohon biner (binary tree) adalah himpunan terbatas yang mungkin kosong atau terdiri dari sebuah simpul yang disebut sebagai akar dan dua buah himpunan lain yang disjoint yang merupakan pohon biner yang disebut sebagai sub pohon kiri (left) dan sub pohon kanan (right) dari pohon biner tersebut. Pohon biner merupakan tipe yang sangat penting dari struktur data dan banyak dijumpai dalam berbagai terapan. Karakteristik yang dimiliki oleh pohon biner adalah bahwa setiap simpul paling banyak hanya memiliki dua buah anak, dan mungkin tidak punya anak. Istilah-istilah yang digunakan sama dengan istilah pada pohon secara umum.

Graph (Graf)
Graph merupakan struktur data yang paling umum. Jika struktur linier memungkinkan pendefinisian keterhubungan sekuensial antara entitas data, struktur data tree memungkinkan pendefinisian keterhubungan hirarkis, maka struktur graph memungkinkan pendefinisian keterhubungan tak terbatas antara entitas data. Banyak entitas-entitas data dalam masalah-masalah nyata secara alamiah memiliki keterhubungan langsung (adjacency) secara tak terbatas demikian. Contoh: informasi topologi dan jarak antar kota-kota di pulau Jawa. Dalam masalah ini kota X bisa berhubungan langsung dengan hanya satu atau lima kota lainnya. Untuk memeriksa keterhubungan dan jarak tidak langsung antara dua kota dapat diperoleh berdasarkan data keterhubungan-keterhubungan langsung dari kota-kota lainnya yang memperantarainya. Representasi data dengan struktur data linier ataupun hirarkis pada masalah ini masih bisa digunakan namun akan membutuhkan pencarian-pencarian yang kurang efisien. Struktur data graph secara eksplisit menyatakan keterhubungan ini sehingga pencariannya langsung (straightforward) dilakukan pada strukturnya sendiri.

4. Berikan contoh untuk masing-masing struktur data
Array 1 dimensi

class array1Dimensi {
public static void main (String [] args){
int [] nilai ={25,27,29,31,33};

//menampilkan elemen array
System.out.println(nilai[0]);
System.out.println(nilai[1]);
System.out.println(nilai[2]);
System.out.println(nilai[3]);
System.out.println(nilai[4]);
}
}


Arraay multidimensi

class arrayMultidim {
public static void main (String [] args){
String [][] kota ={{“Indonesia”,”Iran”,”Jepang”},{“Jakarta”,”Teheran”,”Tokyo”}};
System.out.println(“ibukota “+kota[0][0]+” adalah “+kota[1][0]);
System.out.println(“ibukota “+kota[0][1]+” adalah “+kota[1][1]);
System.out.println(“ibukota “+kota[0][2]+” adalah “+kota[1][2]);
}
}

Contoh stack Array
import java.io.*;
public class stack_array
{
private int maxsize; //penentu batas elemen stack maksimum
private double [] stackarray; //array untuk menyimpan stack
private int top; //indeks array
public void inisiasi(int s) //menentukan ukuran kapasitas stack
{
maxsize = s;
stackarray = new double [maxsize];
top = -1;
}
public void push(double data)
{
if (top>=maxsize-1)
System.out.println(“Stack Penuh. “+data+” Tidak Bisa Masuk”);
else
{
top++;
stackarray[top] = data;
System.out.println(data +” Masuk ke Stack”);
}
}
public double pop()
{
double temp;
if (top>=0)
{
temp = stackarray[top];
System.out.println(temp + ” Keluar dari Stack”);
top–;
return (temp);
}
else
{
System.out.println(“Stack Sudah Kosong”);
return(-1);
}
}
public void view()
{
System.out.print(“Isi Stack: “);
for(int i=0; i<=top; i++)
System.out.print(stackarray[i] + " ");
System.out.println();
}
public static void main(String[] args)
{
stack_array stack = new stack_array();
stack.inisiasi(3);
stack.push(3);
stack.push(4);
stack.push(2);
stack.view();
stack.push(5);
stack.push(1);
stack.pop();
stack.pop();
stack.view();
stack.pop();
stack.pop();
stack.pop();
stack.push(6);
stack.push(8);
stack.push(7);
stack.push(9);
stack.pop();
stack.view();
}
}
Contoh program Queue

class Queue
{
private int maxSize;
private long[] queArray;
private int front;
private int rear;
private int nItems;
//————————————————————–
public Queue(int s)          // konstruktor
{
maxSize = s;
queArray = new long[maxSize];
front = 0;
rear = -1;
nItems = 0;
}
//————————————————————–
public void insert(long j)   // letakkan item (data) di posisi belakang dari queue
{
if(rear == maxSize-1)         //
rear = -1;
queArray[++rear] = j;         //naikkan rear dan masukkan item (data) pada posisi rear yang baru
nItems++;                     //tambah satu item lagi
}

//————————————————————–
public long remove()         // hapus item (data) yang berada pada posisi front
{
long temp = queArray[front++]; //dapatkan nilainya dan naikkan front
if(front == maxSize)           //
front = 0;
nItems–;                      // item (data) berkurang satu
return temp;
}
//————————————————————–
public long peekFront()      //
{

return queArray[front];
}
//————————————————————–
public boolean isEmpty()    //benar jika queue-nya kosong
{
return (nItems==0);
}
//————————————————————–
public boolean isFull()     // benar jika queue-nya penuh
{
return (nItems==maxSize);
}
//————————————————————–
public int size()           // jumlah ietm (data) dalam queue
{
return nItems;
}
//————————————————————–
}  // end class Queue

QueueApp.java

class QueueApp
{
public static void main(String[] args)
{
Queue theQueue = new Queue(5);  // queue menampung 5 item (data)
theQueue.insert(10);            // masukkan 4 item (data)
theQueue.insert(20);
theQueue.insert(30);
theQueue.insert(40);
theQueue.remove();              // hapus 3 item (data)
theQueue.remove();              //    (10, 20, 30)
theQueue.remove();
theQueue.insert(50);            // masukkan 4 item (data) lagi
theQueue.insert(60);            //    (wraps around)
theQueue.insert(70);
theQueue.insert(80);
while( !theQueue.isEmpty() )    // hapus dan tampilkan
{                            //    all items

long n = theQueue.remove();  // (
System.out.print(n);
System.out.print(“ “);
}
System.out.println(“”);
}  // end main()
}  // end class QueueApp

method insert()
Method insert() mengasumsikan bahwa queue tidak penuh (full). Kita tidak melihatnya dalam main(), tetapi kita bisa memanggil insert() hanya setelah memanggil isFull() dan memperoleh nilai kembalian yang salah. Pengisian data dengan cara menaikkan rear dan mengisikan data baru tersebut pada rear yang baru sekarang. Tetapi, jika rear berada di puncak array, pada maxSize-1, maka harus kembali ke posisi terbawah array sebelum penyisipan dilakukan. Caranya dengan memberi nilai rear=-1, sehingga jika terjadi kenaikan pada pada rear, maka rear akan menjadi 0, dasar dari array. Dan akhirnya, nItem bertambah.

Method remove()
method remove mengasumsikan queue-nya tidak kosong. Untuk meyakinkan bahwa queue-nya tidak kosong, anda harus memanggil method isEmpty(). Penghapusan selalu dimulai dengan memperoleh nilai pada front dan kemudian mengurangi front. Jika front-nya terletak pada akhir array, maka harus kembali ke 0. Kemudian nItems dikurangi.

Method peek()
untuk mendapatkan nilai pada front.

Method isEmpty(), isFull(), and size()
untuk mengecek nItems, apakah kosong atau penuh.


Contoh Program List dan Multi-List (Daftar)

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MultipleSelectionTest extends JFrame {
private JList lstColor, lstCopy;
private JButton btnCopy;
private final String arrColorName[] =
{ "Black","Blue","Cyan","Dark Gray","Gray","Green","Light Gray",
 "Magenta","Orange","Pink","Red","Yellow","White"
};

public MultipleSelectionTest() {
super ("Multiple Selection List");

Container container = getContentPane();
container.setLayout(new FlowLayout());

lstColor = new JList (arrColorName);
lstColor.setVisibleRowCount(5);
lstColor.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
container.add(new JScrollPane (lstColor));

btnCopy = new JButton ("Copy >>>");

btnCopy.addActionListener(
new ActionListener() {
public void actionPerformed (ActionEvent e) {
lstCopy.setListData(lstColor.getSelectedValues());
}
} //end of class
);

container.add(btnCopy);

lstCopy = new JList();
lstCopy.setVisibleRowCount(5);
lstCopy.setFixedCellHeight(15);
lstCopy.setFixedCellWidth(100);
lstCopy.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
container.add(new JScrollPane(lstCopy))

setSize (400,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]) {
    MultipleSelectionTest test = new MultipleSelectionTest();
    test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}



Contoh Binary Tree (Pohon Biner)

class SimpulPohon {
    int item;        // Data pada simpul ini
    SimpulPohon kiri;   // Pointer ke cabang sebelah kiri
    SimpulPohon kanan;  // Pointer ke cabang sebelah kanan
}


Contoh Graph (Graf)


/**
* class Graph
* @author Jim
* @version 1.0
*/

public class Graph
{
protected HashMap adjacencyMap;
/**
* insialisasi Graf, membuat adjacency map
*/
public Graph()
{
adjacencyMap = new HashMap()
}
/*** Memeriksa apakah Graf mengandung simpul
**@return true – jika tidak mengandung simpul kosong.
*/public boolean isEmpty()

{
return adjacencyMap.isEmpty();
}
/*** Mengembalikan jumlah simpul induk dalam graf */

public int size()
{
return adjacencyMap.size();
}

/**
* Mengembalikan jumlah sisi dalam graf
*/public int getEdgeCount()
{
int count = 0;
for (inti=0;i<adjacencyMap.CAPACITY;i++){
if (adjacencyMap.keys[i] != null){
LinkedList edges = (LinkedList)
adjacencyMap.get(adjacencyMap.keys[i]);
count += edges.size();
}}
return count;
}
/*** Menambahkan sebuah objek sebagai simpul
* @param vertex – the specified object

* @return true – jika berhasil ditambahkan

*/public boolean addVertex (Object vertex){
if (adjacencyMap.containsKey(vertex))
return false;
adjacencyMap.put (vertex, new
LinkedList());
return true;
}

/*** Menambahkan sisi, dan simpul jika belum ada dalam graf
* @param v1 – simpul awal mula sisi
* @param v2 – simpul akhir dari sisi
* @return true – jika sisi berhasil ditambahkan ke dalam graf*/
public boolean addEdge (Object v1, Object v2)
{
addVertex (v1); addVertex (v2);
LinkedList l = (LinkedList)
adjacencyMap.get(v1);
l.add(v2);
return true;
}
}

Sumber :
http://chianjell.blogspot.com/2012/03/tipe-data-struktur-dataintegerrealboole.html
http://nicolaskartino.blogspot.com/2010/03/jenis-jenis-dan-definisi-struktur-data.html
http://ritagunadarma.wordpress.com/2010/02/25/jenis-jenis-struktur-data/

You Might Also Like

0 komentar

teman

QUOTE OF THE DAY

Jatuh untuk bangkit