劍指offer 5 用兩個棧實現佇列

2021-08-20 18:23:30 字數 1168 閱讀 7105

題目描述

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。

思路:棧 先進後出,佇列 先進先出

1 2 3 棧 3 2 1

1 2 3 佇列 1 2 3

stack1進棧後為1 2 3 出棧並儲存在stack2中為3 2 1,stack2出棧就和佇列一致了。

push,在stack1中進行,pop則把stack1中的元素輸出到stack2中,stack2為空才再次進棧。

class solution

int pop()

}int data=stack2.top();

stack2.pop();

return data;

}private:

stack

stack1;

stack

stack2;

};

python

# -*- coding:utf-8 -*-

class

solution:

def__init__

(self):

self.stack1=

self.stack2=

defpush

(self, node):

# write code here

defpop

(self):

if len(self.stack2)==0:

while len(self.stack1)!=0:

return self.stack2.pop()

# return xx

pop()與remove的區別

1.pop()方法,傳遞的是待刪除元素的index,返回值為刪除的元素:

x = ['a', 'b', 'c', 'd']

x.pop(2) #預設刪除後一位,超出範圍會報錯

print

x['a', 'b', 'd']

2. remove()傳遞待刪除元素:

x = ['a', 'b', 'a', 'c', 'd']

x.remove('a') #不包含則報錯

print

x['b', 'a', 'c', 'd']

劍指offer 5 用兩個棧實現佇列

題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解題思路 需要用棧來模擬佇列的push和pop操作。要知道,棧是先進後出,而佇列是先進先出,所以用棧實現佇列的時候,需要兩個棧,進棧可以直接進棧就ok,但是需要首先將兩個棧合為乙個棧,但是出棧的話,需要將原先...

劍指Offer 5 用兩個棧實現佇列

description用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。注 不考慮邊緣情況,如 在兩個stack都空的時候pop 作為乙個lifo的資料結構,stack中的元素在彈出的時候為反序。而為了實現乙個fifo的queue,我們就需要將反序的元素再push進令...

劍指Offer5 用兩個棧實現佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。使用stack1和stack2,進棧時都進stack1,出棧時,將stack1依次放入stack2中,再從stack2 棧,當stack2中為空時,再將stack1中的元素一次放入stack2中。class solut...