praktikum 6 stack.docx

13
PRAKTIKUM 6 STACK 6.1 Tujuan Setelah melakukan praktikum ini siswa diharapkan mengerti : 1. Cara lain untuk merepresentasikan sekumpulan data menggunakan stack 2. Anggota/elemen struktur dari sebuah stack dengan array atau linked list 3. Cara penggunaan stack dengan array ataupun dengan linked list 4. Penelusuran simpul/pembacaan stack : LIFO (Last In First Out) 6.2 Dasar Teori Representasi stack: push pop Operasi-operasi dasar pada stack adalah sebagai berikut : 1. Operasi menciptakan T sebagai stack kosong Void initializeStack(Stack*S) { S->count=0; }

Upload: farah-devi-isnanda

Post on 12-Dec-2014

130 views

Category:

Documents


3 download

DESCRIPTION

Pemrograman dasar 2 STACK

TRANSCRIPT

Page 1: PRAKTIKUM 6 STACK.docx

PRAKTIKUM 6STACK

2.1Tujuan

Setelah melakukan praktikum ini siswa diharapkan mengerti :

1. Cara lain untuk merepresentasikan sekumpulan data menggunakan stack

2. Anggota/elemen struktur dari sebuah stack dengan array atau linked list

3. Cara penggunaan stack dengan array ataupun dengan linked list

4. Penelusuran simpul/pembacaan stack : LIFO (Last In First Out)

2.2Dasar Teori

Representasi stack:

push pop

Operasi-operasi dasar pada stack adalah sebagai berikut :

1. Operasi menciptakan T sebagai stack kosong

Void initializeStack(Stack*S) { S->count=0; }

2. Fungsi yang melakukan pengecekan apakah stack dalam kondisi kosong

Int Empty(Stack*S)

{ return(S->count==0); }

3. Fungsi yang melakukan pengecekan apakah stack dalam kondisi penuh

Int Full(Stack*S)

{ return(S->Count==MAXSTACK); }

4. Operasi menyisipkan elemen x ke stack T dan mengembalikan stack baru

Void Push(ItemType x, Stack *S)

{ If(S->Count==MAXSTACK)

Page 2: PRAKTIKUM 6 STACK.docx

Printf(“Stack penuh! Data tidak dapat masuk!”);

Else

{ S->Item[S->Count]=x; ++(S->Count); }

5. Operasi mengambil elemen puncak stack T, (pop(T,x))Int Pop(Stack *S, ItemType *x){

If(S->Count==0) //stack kosong Printf(“Stack masih kosong”);Else

{ --(S->Count); *x=S->Item[S->Count]; }}

2.3 Latihan Program

1. Mendeklarasikan, memasukkan data, dan menampilkan pada stack

menggunakan array (=penelusuran LIFO)

Hasil run :

Page 3: PRAKTIKUM 6 STACK.docx

2. Mendeklarasikan, memasukkan data, dan menampilkan pada stack

menggunakan linked list (=penelusuran LIFO)

Hasil run :

Page 4: PRAKTIKUM 6 STACK.docx

3. Aplikasi stack pada program konversi infix ke postfix

Algoritma :

1. Inputkan string persamaan dalam notasi infix (=var s)->panjang string

s(=var N)

2. Sediakan fungsi derajat operator ^=3, *dan/ = 2, +dan- = 1

3. Dimulai dari i = 1 s/d N lakukan :

R=s[i];

Test nilai r:

Jika operand : langsung ditulis

Jika operator :

- Jika tumpukan kosong/derajat r>derajat TOP stack -> PUSH

operator ke dalam tumpukan

- Jika tidak POP TOP stack dan tulis

4. jika diakhir notasi infix telah tercapai, tumpukan masih belum kosong ->

POP semua isi tumpukan dan tulis hasilnya .

4. Aplikasi program menghitung nilai ekspresi postfix

Page 5: PRAKTIKUM 6 STACK.docx
Page 6: PRAKTIKUM 6 STACK.docx

Hasil run :

Setelah memilih y dan memasukkan kembali fungsi :

Page 7: PRAKTIKUM 6 STACK.docx

2.4 Soal-soal Tugas Pemrograman

1. Untuk latihan program no 1 dan 2 buatlah bagan proses dari stack, untuk

setiap operasi push dan pop pada representasi array dan linked list . Jangan

lupa memasukkan juga perubahan nilai indek array dan perubahan nilai

pointernya .

2. Buatlah program konversi system bilangan dengan stack, dapat menggunakan

array atau linked list

Decimal ke biner

Decimal ke octal

Decimal ke hexadecimal

Page 8: PRAKTIKUM 6 STACK.docx

Hasil run :

Page 9: PRAKTIKUM 6 STACK.docx

Jawaban no.1

Struct tumpukan t;

strnilai

Push(atoi(strnilai));

Jika t.atas=10; maka tumpukan sudah penuh

10push(atoi(strnilai)); Jika t.atas belum 10.t.atas=top+1; t.isi[t.atas]=xtop=t.atas;

Atas

isi

Page 10: PRAKTIKUM 6 STACK.docx

Jika top=0, tumpukan sudah kosong

Page 11: PRAKTIKUM 6 STACK.docx

Program 2