7 1棧的應用

2021-09-27 22:28:21 字數 1615 閱讀 6737

棧就是一種後進先出的資料結構。

一般都有乙個棧頂指標,指向棧的最上面的乙個元素,

當用陣列實現堆疊的時候,棧頂指標就是乙個int型的變數,當沒有元素的時候記為-1,第乙個元素為0,用top來表示。當用鍊錶來實現棧的時候,則是乙個int*型的指標

typedef int position;

struct snode ;

typedef struct snode *stack;

stack createstack( int maxsize )

bool isfull( stack s )

bool push( stack s, elementtype x )

else }

bool isempty( stack s )

elementtype pop( stack s )

else

return ( s->data[(s->top)--] );

}

typedef struct snode *ptrtosnode;

struct snode ;

typedef ptrtosnode stack;

stack createstack( )

bool isempty ( stack s )

bool push( stack s, elementtype x )

elementtype pop( stack s )

else

}

stl庫stack的常見用法

stackname;

st.push(i); //將i壓入棧

st.top(); //獲得棧頂元素

st.pop(); //用以彈出棧頂元素

st.empty(); //返回true為空,返回false為非空

st.size(); //大小

//在使用top()和pop()函式之前必須先用empty()判斷棧是否空

//stl沒有實現棧的清空,可以用while迴圈pop出元素

while(!st.empty())

a1051

#include#includeusing namespace std;

const int maxn=1010;

int arr[maxn]; //儲存題目給定的出棧序列

stackst; //定義棧st,用以存放int型元素

int main()

for(int i=1;i<=n;i++) //讀入資料

int current=1; //指向出棧序列中的待出棧元素

bool flag=true;

for(int i=1;i<=n;i++)

//棧頂元素與出棧序列當前位置的元素相同時

while(!st.empty()&&st.top()==arr[current])

}if(st.empty()==true&&flag==true)else

}return 0;

}

7 1 棧的應用

6.8 stack的常見用法詳解與此節題目相同 emmmmm 注釋很清楚,標註 的地方都是寫 的時候漏掉的,要注意!一開始沒有寫node結構體,但是考慮到如果不管運算元還是操作符都用char表示的話,運算元最大為127而且不能有浮點數,這顯然是不可能的,所以還是改成了node結構體。書p147也有此...

PTA 7 1 列車廂排程(棧的應用)

題目點我 樣例如圖 1 3軌道都可以看成是棧,不論是1軌還是3軌都應該讓棧頂指向車廂在軌道的移動方向 因為棧的優點是在棧頂插入和刪除元素很方便,反過來的話 寫起來會很麻煩 結合圖和題目要求的輸入,兩個輸入都應該逆序入棧 1.先定義乙個標記int flag 1 假定按輸入的排程方式不會出現問題。當出問...

棧 71 簡化路徑

以 unix 風格給出乙個檔案的絕對路徑,你需要簡化它。或者換句話說,將其轉換為規範路徑。在 unix 風格的檔案系統中,乙個點 表示當前目錄本身 此外,兩個點 表示將目錄切換到上一級 指向父目錄 兩者都可以是複雜相對路徑的組成部分。更多資訊請參閱 linux unix中的絕對路徑 vs 相對路徑 ...