1. Stack termasuk ( a ) Liear List atau ( b ) non Liear List
2. jelaskan perbedaan antara Linear Listt dan Non linear List, beri contoh 3. penghapusan elemen dari stack dilakukan mulai dari bagian (a) awal/bottom atau (b) akhir/top 4. apa fungsi dari perintah NOEL(S) ? 5. perintah ( operator) apa yang digunakan untuk memasukan elemen ke dalam stack ? 6. perintah ( operator ) apa yang digunakan untuk menghapus elemen dari stack ? 7. Apa saja perlakua yang dimungkinkan sehingga suatu stack dikatakan dalam kondisi hampa 8. prinsip kerja stack adalah (a) FIFO atau (b) LIFO 9. Sebutkan 4 (empat ) operasi pada stack dan beri contoh-contohnya. 10. dari keempat operasi diatas, mana yang menghasilkan data yang bertipe Boolean 11. pada sebuah stack, kapan posisi TOP = BOTTOM 12. sebutkan dua kesalahan yang mungkin terjadi pada pengoprasian stack dan pada kondisi seperti apa kesalahan itu bisa terjadi ? 13. Apa saja keterbatasan mendeklarasikan tipe data yang seharusnya stack, tetapi harus menggunakan tioe data array ? (di bahasa pemograman itu tidak ada stack ) 14. Apa yang dimaksud dengan istilah matching parantheses ? 15. Operasi pada stack dapat mengalihkan notasi infix menjadi (a) prefix dan ( b) positif 16. infix = a-b*(^D^E*F/(G-H)) Postfix + ABCDEFGH-/*^^*-. 17. Buat program dengan bahsa pemograman apapun untuk menyelesaikan no 16 di atas. JAWABAN : 1. stack (tumpukan ) termasuk linear list/bentuk khusus dari linear list yang pemasukan dalam penghapusan elemennya hanya dapat dilakukan pada satu posisi, yaitu posisi akhir dari list (top). 2. Perbedaan utama antara struktur data linier dan nonlinier adalah bahwa dalam struktur data linier, organisasi elemen data berurutan, sedangkan dalam struktur data nonlinear, organisasi elemen data tidak berurutan. 3. penghapusan elemen pada stack dimulai dari (pop) awal/bottom 4. noel(s) difungsikan untuk membuat stack kosong 5. PUSH 6. POP 7. suatu stack dikatakan dalam kondisi hampa jika posisi akhir dari list (top) pada stack berada di posisi top = -1. 8. LIFO ( LAST IN FIRST OUT ) 9. 4(empat) operasi pada stack a. push ( menginput data pada stack) ex : void push (char d[20]) { Tumpukan.top ++ ; Strcpy ( tumpukan. Data{tumpuk.topi],d); Printf(data berhasil dimasukan”);} b. pop (mengambil data pada stack ) Ex : void pop () { printf (“data %s terambil “, tumpuk . data [tumpuk . top]); tumpuk . top -- ; } c. isFull (mengecek apakah stack penuh ) Ex : int isFull () { if(tumpuk . top = = max _stack -1) return 1; else return 0; }
d. isEmpty (mengecek apakah stack kosong )
Ex : int isEmpty () { if(tumpuk . top = = -1) return 1; else return 0; } 10. d. isempty ( mengecek apakah stack kosong ) 11. saat stack dalam keadaan hampa. Saat elemen TOP lalu kita POP maka keadaan elemen akan terhapus dan hampa 12. 1. Apabila keadaan stack kosong dan kita akan mem-pop(menghapus data) maka akan terjadi kesalahan dan kemudian eror ( underflow) 2. apabila keadaan stack penuh dan kita akan men-top 9 menambah data ) maka akan terjadi kesalahan dan kemudian error ( underflow) 13. elemen stack harus homogeny 14. problema penjodohan tanda kurung 15. infix-postfix-prefix 12. kesalahan yang mungkin terjadi pada pengoperasian stack dan pada kondisi seperti 16. konversikan notasi infix A-B*(^D^(E*F/(G-H)) ke notasi postfix infix = A-B*(^D^(E*F/(G-H)) postfix = ABCDEFGH-/*^^*- 17. class Stack: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[len(self.items)-1] def size(self): return len(self.items) def showList(self): return self.items
if token in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" or token in "0123456789": postfixList.append(token) elif token == '(': opStack.push(token) elif token == ')': topToken = opStack.pop()
while topToken != '(':
postfixList.append(topToken) topToken = opStack.pop() else: while (not opStack.isEmpty()) and \ (prec[opStack.peek()] >= prec[token]): postfixList.append(opStack.pop()) opStack.push(token) print('isi postix ',str(postfixList))
while not opStack.isEmpty():
postfixList.append(opStack.pop()) print('isi postix ',str(postfixList)) return " ".join(postfixList) print(infixToPostfix("A * B - C * D")) print(infixToPostfix("( A + B ) * C - ( D - E ) * ( F + G )"))