9
LAPORAN PRAKTIKUM ALGORITMA dan STRUKTUR DATA I S T A C K OLEH: KHORI WIDAYANTI 0710963019 LABORATORIUM KOMPUTER PROGRAM STUDI ILMU KOMPUTER

LAPORAN PRAKTIKUM

Embed Size (px)

DESCRIPTION

laporan praktikum algoritma

Citation preview

LAPORAN PRAKTIKUM ALGORITMA dan STRUKTUR DATA I

S T A C K

OLEH:KHORI WIDAYANTI0710963019

LABORATORIUM KOMPUTERPROGRAM STUDI ILMU KOMPUTERJURUSAN MATEMATIKA FAKULTAS MIPAUNIVERSITAS BRAWIJAYA2008No.DoubleCircularList.java

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181class Node{Object data;Node next;Node prev;}

public class DoubleCircularList{Node head;public DoubleCircularList(){head=null;}public int IsEmpty(){if(head == null) return 1;else return 0;}public boolean IsNotEmpty(){return (head!=null);}public Object FindFirstNode(){Node n = head;return head.data;}public Node FindLastNode(){Node n = head;if(IsNotEmpty()){while(n.next!=head){n = n.next;} }System.out.println(n.data);return n;}public Node Find_i(int i){int j=1;Node n = head;if (n.next!=head){while (i!=j){n=n.next;j++;}}System.out.println(n.data);return n;}public void DeleteFirst(){Node hapus,current;Object d;if(IsEmpty()==0){if(head.next != head){hapus=head;d=hapus.data;current=head.prev;head=head.next;current.next=head;head.prev=current;hapus=null;}else{d=head.data;head=null;}}}public void DeleteLast(){Node hapus,current;Object d;if (IsEmpty()==0){if(head.next != head){current = head;while(current.next.next!=head){current = current.next;}hapus = current.next;d = hapus.data;current.next = head; hapus=null;} else {d = head.data;head = null;}} }public void InsertLast(Object o){Node new_n=new Node();new_n.data=o;if (IsEmpty()==1){//List masih kosonghead=new_n;new_n.next=head;new_n.prev=head;}else{//List tak kosongnew_n.next=head;new_n.prev=head.prev;head.prev.next=new_n;head.prev=new_n;}}public void InsertFirst(Object o){InsertLast(o);head=head.prev;}public void print(String str){//String str;System.out.println(str);Node n=head;if(IsNotEmpty()){do{System.out.println(n.data);n=n.next;}while (n!=head);}else{System.out.println("List Kosong");}}public static void main (String [] args){DoubleCircularList dcl=new DoubleCircularList();//dcl.FindlastNode();dcl.InsertFirst(10);dcl.InsertFirst(20);dcl.InsertFirst(15);dcl.InsertFirst(30);System.out.println("Data Awal");dcl.print("Double Circular List");dcl.InsertLast(16);dcl.print("\nData sisipan di akhir");System.out.println("\nMenemukan Data Pertama");//dcl.DeleteFirst();dcl.FindFirstNode();System.out.println("\nMenemukan Data Terakhir");dcl.FindLastNode();System.out.println("\nMenemukan Data Ke-3");dcl.Find_i(3);dcl.DeleteFirst();dcl.print("\nHapus data awal");dcl.DeleteLast();dcl.print("\nHapus data akhir,setelah data awal terhapus ");}}

No.Stack.java

12345678910111213141516171819202122232425262728293031323334353637public class Stack{private DoubleCircularList S;public Stack(){S=new DoubleCircularList(); }public void Push(Object o){S.InsertFirst(o);}public Object Pop(){Object o = S.FindFirstNode();S.DeleteFirst();return o;}public void print(String str){S.print(str);}public static void main(String[]args){Stack S=new Stack();S.Push(1);S.Push(2);S.Push("tiga");S.print("Stack Asal");Object o=S.Pop();S.print("Stack setelah di Pop");System.out.println("Object yang di Pop:"+o);}}

output

PENJELASAN :StackStack adalah suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Contoh dalam kehidupan sehari-hari adalah tumpukan piring di sebuah restoran yang tumpukannya dapat ditambah pada bagian paling atas dan jika mengambilnya pun dari bagian paling atas pula. Ada 2 operasi paling dasar dari stack yang dapat dilakukan, yaitu : 1. Operasi push yaitu operasi menambahkan elemen pada urutan terakhir (paling atas). 2. Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dan menghapus elemen tersebut dari stack. Selain operasi dasar stack (push dan stack), ada lagi operasi lain yang dapat terjadi dalam stack yaitu : 1. Proses deklarasi yaitu proses pendeklarasian stack. 2. Proses isempty yaitu proses pemeriksaan apakah stack dalam keadaan kosong. 3. Proses isfull yaitu proses pemeriksaan apakah stack telah penuh. 4. Proses inisialisasi yaitu proses pembuatan stack kosong, biasanya dengan pemberian nilai untuk top. ISEMPTYadalah operator yang menentukan apakah stack S kosong. Operandnya terdiri dari type data stack. Hasilnya merupakan type data Boolean.ISEMPTY(S) = True. Jika S hampa, yakni bila NOEL(S) = 0.

PUSHadalah operator yang menambahkan elemen E pada puncak stack S. Hasilnya merupakan stack yang lebih besar. PUSH(E,S). E ditempatkan sebagai TOP(S).

POP(stack)adalah operator yang menghapus sebuah elemen dari puncak stack S. Hasilnya merupakan stack yang lebih kecil. POP(S) mengurangi NOEL(S) POP(CREATE(S)) kondisi error POP(PUSH(E,S)) = S

Print- Untuk menampilkan semua elemen-elemen stack- Dengan cara looping semua nilai array secara terbalik, karena kita harus mengakses dari indeks array tertinggi terlebih dahulu baru ke indeks yang kecil!