棧元素入棧出棧操作(C)

2021-10-03 10:30:43 字數 725 閱讀 7124

元素入棧時,會先將棧壓入,top指標再向上加一。c語言如何實現呢,下面是入棧的**片段:

typedef struct node

sqstack;

void push(sqstack *s, int elem)//入棧

*s->top++ = elem,s本為指向node結構的乙個指標,本來對普通結構體指標賦值或者使用用 s -> stacksize 語句就行,因為s本身儲存的是該結構例項的首位址,->便可以以指標方式從s位址找到他的結構成員stacksize,但是這裡為什麼找結構成員top時前面加了*呢,我是這樣理解的:

首先->並非是個二元字元,不應該同*比較優先順序。如果認為他是個二元字元,優先順序低於一元字元*,那麼這裡 *s -> top 就看成了 (*q) -> top,這語法便是錯誤的。前面部落格所講結構指標的成員賦值方式應該是 q -> stacksize = xx 或者 (*q).stacksize = xx。所以這裡應該是 * (s -> top) ,其實就等價於 *top ,只不過由於top屬於s結構體,所以這樣來表示。其次這個 ++ 是後自增,所以先是 *top = elem,然後 *top 即*(s -> top) 再 +1自增。

同理,出棧操作就應該是(top指標是指的棧頂元素頭頂的null儲存單元,所以要先自減,再獲取棧頂元素出棧):

elem = *--s->top;//指標先減一,棧頂元素再出棧

棧的入棧,出棧,顯示入棧元素

要實現的功能如下 printf t t1.入棧 n printf t t2.出棧 n printf t t3.顯示棧內元素 n define maxsize 5 巨集定義 typedef struct stack 定義棧 void push stack p,int e void printstack...

由入棧 出棧序列求所有出棧 入棧序列

給出乙個陣列,代表入棧順序,求所有出棧可能性?給出乙個陣列,代表出棧順序,求所有入棧可能性?這兩題解法相同,可利用全排列求出所有組合,再進行可能性分析。全排列 如下 public list permute int nums 這種方法是什麼意思呢?例如abc,在第0位有三種可能,axx,bxx,cxx...

入棧和出棧的基本操作

題目 描述 輸入乙個整數序列a1,a2,a3.an。當ai不等於 1時將ai進棧 當ai 1時,輸出棧頂元素並將其出棧。輸入多組資料,每組資料有兩行,第一行為序列的長度n,第二行為n個整數,整數之間用空格分隔。當n 0時輸入結束。輸出對於每一組資料輸出若干行。每行為相應的出棧元素。當出棧異常時,輸出...