用佇列實現棧的兩種方法

2021-07-30 10:00:46 字數 1052 閱讀 4309

用佇列實現棧。

方法一:用兩個佇列實現棧:

兩個佇列,乙個用於存資料,乙個用於中轉,使用不固定。同一時刻兩個佇列不可能同時有資料。實現棧的操作就是將數在這兩個佇列中不斷轉移。

入棧:選擇不為空的佇列加入資料,如果都為空,則加入佇列2.

出棧時:將不為空的佇列的資料依次加入另乙個佇列中直至佇列只剩下乙個數,將該數彈出。

返回棧首:將不為空的佇列的數依次加入得到另乙個佇列,直至只剩下乙個數,將該數賦值給top,後將該數加入另乙個佇列。

實現**:

class mystack

;void mystack::push(int val)

void mystack::pop()

q1.pop();

}else

q2.pop();

}}int mystack::top()

top = q1.front();

q2.push(q1.front());

q1.pop();

}else

top = q2.front();

q1.push(q2.front());

q2.pop();

}return top;

}bool mystack::empty()

方法二:用乙個佇列實現棧:

佇列a,每次進棧都將元素加入到佇列a,出棧時,將佇列a的前size-1個元素,迴圈加入到a的尾,然後將位於a頭的元素彈出。

以下是實現**:

class mystack

;void mystack::push(int val)

void mystack::pop()

q1.pop();

}int mystack::top()

int top = q1.front();

q1.push(q1.front());

q1.pop();

return top;

}bool mystack::empty()

C 兩種方法實現棧(stack)

我們用乙個問題來說。問題是這樣的 實現乙個序列,該序列中包含n個棧si i 1,2,3,n 棧中存放的都是int型別的整數,並能夠完成以下操作 為了簡單,沒有對類分離,寫在了乙個檔案裡,有興趣的小夥伴們可以嘗試著將類分離開 由於向量直接提供了類似的 入棧和出棧函式,所以我想建立乙個陣列,陣列中的元素...

用兩種方法實現棧 順序表和煉表

棧是一種先進後出的資料結構,棧中的資料是先進後出的 first in last out,filo 棧只有乙個出口,允許新增元素 只能在棧頂上增加 移出元素 只能移出棧頂元素 取得棧頂元素等操作。在stl中,棧是以別的容器作為底部結構,再將介面改變,使之符合棧的特性就可以了。棧裡面常用的函式有push...

用佇列實現棧 用兩個棧實現佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。var cqueue function param value return this.stacka.push value return cqueue.prototype.deletehead function els...