Anda di halaman 1dari 6

PERTANYAAN :

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

def infixToPostfix(infixexpr):
prec = {}
prec["*"] = 3
prec["/"] = 3
prec["+"] = 2
prec["-"] = 2
prec["("] = 1
opStack = Stack()
postfixList = []
tokenList = infixexpr.split()
print(tokenList)

for token in tokenList:


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 )"))

Anda mungkin juga menyukai