Stack pada python (tumpukan)


Stack .

Stack adalah kumpulan data yang terurut sesuai bagaimana data tersebut ditambahkan atau dihapus. Proses pada stack terjadi pada satu ujung. Ujung ini disebut 'top'. Sisi yang berlawanan dengan ujung ini disebut 'base'. Stack dalam pengurutan data menggunakan metode LIFO (Last in, First in). Contoh implementasi dari stack adalah memeriksa keseimbangan tanda kurung, konversi bilangan desimal ke biner, konversi infix ke postfix/prefix dan lain sebagainya.

Berikut ini adalah algoritma salah satu implementasi Stack yaitu program memeriksa kata dengan lawan katanya. Jika kata tersebut bertemu dengan lawan katanya maka hasillnya True.
Buatlah list pasangan kata.
1. Input kata yang ingin diperiksa dan masukan ke Stack
2. Buat Variabel hasil untuk menyimpan hasil True dan False.
3. Ambil satu kata dari Stack.
4. Bandingkan kata tersebut dengan kata yang berada pada list pasangan kata.
5. Jika tidak ketemu maka kirim hasil False pada variabel hasil, Jika ketemu maka ambil satu kata
6. dari stack lagi untuk membandingkannya dengan list pasangan yang tadi sama dengan kata pertama.
7. Jika kata kedua tidak ketemu dengan pasangan pada kata pertama, maka variabel hasil berisi False
8. Begitu seterusnya, sampai data yang diinputkan habis.
9. Akumulasikan/evaluasi variabel hasil dengan operator 'And'



Code program :
class Stack:
    def __init__(self):
        self.items=[]
        
    def isEmpty(self):
        return self.items == []
    def open(self):
        return self.items
    def push(self,item):
        return 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)
    
s = Stack()

stak=[]
soal =''
pasangan = [['siang','malam'],['terang','gelap'],['malam','siang'],['gelap','terang'],['terbit','tenggelam'],['tenggelam','terbit']]
masukan = int(input('Masukan berapa banyak kata yang ingin diinput = '))
for i in range(masukan):
    b = input('Masukan kata ke %i = '%(i+1))
    s.push(b)
    stak.append(b)
for i in range(len(stak)):
    soal=soal + stak[i] + ' '
#print(s.open())
hasil = 0
pembanding = False
hasil1 = False
while not s.isEmpty():
    a = Stack()
    if len(s.open()) == 1:
        hasil1=False
    cek = s.pop()
    for i in range(len(pasangan)):
        pas = pasangan[i][0]
        if cek == pas:
            ketemu = False
            if s.size() <= 0:
                ketemu = True
            else:
                ketemu = False
            while not ketemu:
                ka = s.open()
                jum = len(ka)-1
                while jum >= 0:
                    cek1 = ka[jum]
                    if pasangan[i][1] == cek1:
                        ketemu = True
                        hasil1 = True
                        ka.remove(cek1)
                        break
                    else:
                        hasil1 = False
                    jum-=1
                ketemu = True
    hasil = hasil1
    pembanding = hasil and hasil1
print(soal +'-> '+ str(pembanding))


Share this

Related Posts

Previous
Next Post »