C 兩種方法實現棧(stack)

2022-06-18 07:09:10 字數 1557 閱讀 6470

我們用乙個問題來說。問題是這樣的:

實現乙個序列,該序列中包含n個棧si (i = 1, 2, 3, ... , n),棧中存放的都是int型別的整數,並能夠完成以下操作:

(為了簡單,沒有對類分離,寫在了乙個檔案裡,有興趣的小夥伴們可以嘗試著將類分離開)

由於向量直接提供了類似的 入棧和出棧函式,所以我想建立乙個陣列,陣列中的元素是向量。每個向量就是乙個棧。廢話不多說,上**:

#include #include 

using

namespace

std;

class

stacktest

~stacktest()

int push(int t, int

x)

bool top(int

t)

return stacks[t-1

].empty();

}int pop(int

t) private

: vector

*stacks;

};int

main()

執行結果:

用結構體實現棧,可以說是一般的方式了。**如下:

#include using

namespace

std;

const

int stacksize = 100

;typedef

struct

sqstack;

bool initstack(sqstack&s)

else

}int pushstack(sqstack& s, int

x) else

}int popstack(sqstack&s)

else

}int topstack(sqstack&s)

else

}class

stacktest

cout

<< "

-------------------------

"<

cout

<< n << "

個棧建立完成!

"<

}~stacktest()

int push(int t, int

x)

return

tmp;

}int pop(int

t)

return

tmp;

}int top(int

t)

return

tmp;

}private

: sqstack*stacks;

};int

main()

執行結果:

用佇列實現棧的兩種方法

用佇列實現棧。方法一 用兩個佇列實現棧 兩個佇列,乙個用於存資料,乙個用於中轉,使用不固定。同一時刻兩個佇列不可能同時有資料。實現棧的操作就是將數在這兩個佇列中不斷轉移。入棧 選擇不為空的佇列加入資料,如果都為空,則加入佇列2.出棧時 將不為空的佇列的資料依次加入另乙個佇列中直至佇列只剩下乙個數,將...

折半查詢c 的兩種方法實現

折半查詢在資料結構演算法中是乙個比較實用的演算法。但是它是乙個只能用於查詢有順序的數,這並不影響它的使用,可以先實現乙個排序再進行查詢。折半查詢比較簡單,但是注意的點也比較多。下面我將用遞迴和非遞迴兩種方法進行實現。非遞迴 在取頭尾時有兩種選擇 左閉右閉 begin,end 左閉右開 begin,e...

C 實現窗體全屏的兩種方法

方法一 不過此方法有時候會出現莫名的bug 程式啟動路徑,與生成程式的exe檔案在同一目錄下 public string exepath application.startuppath 定義窗體寬高 int screenwidth 0 int screenheight 0 screenwidth i...