C 棧的基本操作

2022-04-09 13:57:44 字數 3682 閱讀 2193

1

: 定義控制台應用程式的入口點。2//

34 #include "

stdafx.h

"5 #include 6

using

namespace

std;

7 typedef struct

stacknode

8stacknode,*linkstack;

1213

//判斷棧為空

14int stackempty(linkstack &top)

1521

22//

入棧函式

23 linkstack push(linkstack &top,int

value)

2432

else

33 cout << "

沒有記憶體可分配

"<34return

top;35}

3637

//出棧函式

38int pop(linkstack &top)

3951

return

data;52}

5354

//列印函式

55void print(linkstack &top)

5667}68

}6970//

取棧頂元素

71int stacktop(linkstack &top)

728081}

8283

//獲得棧的長度

84int stacklength(linkstack &top)

8593

return

length;94}

9596

//銷毀棧

97void destroystack(linkstack &top)

98106 cout << "

銷毀成功!

"<107}

108109

//棧的初始化

110void initstack(linkstack &top)

111115

116//

前導函式

117void printscreen(void

)118

130131

132int

main()

133151 print(top); //

列印棧152 cout <153break

;154

case

2: //

出棧操作

155if(top ->next !=null)

156 cout << "

彈出的元素是:

"<< pop(top) <157break

;158

case

3: //

取棧頂元素

159 cout << stacktop(top) <160break

;161

case

4: //

判斷棧是否為空

162if

(stackempty(top))

163 cout << "

該棧為空!

"<164else

165 cout << "

該棧不為空!

"<166break

;167

case

5: //

返回棧的元素個數

168if(stackempty(top) == 0

) 169 cout << stacklength(top)<170break

;171

case

6: //

初始化棧

172initstack(top);

173 cout <174break

;175

case

7://

顯示棧176 print(top); //

列印棧177 cout <178break

;179

case

8: //

銷毀棧180

destroystack(top);

181 cout <182break

;183

case9:

184goto

end;

185default

:186 cout << "

不合法的輸入,請重新輸入

"<187}

188printscreen();

189 cin >>n;

190}

191end: ;

192return0;

193 }

實驗二

實驗名稱:棧的基本操作

實驗目的:掌握棧的結構特點並熟悉棧的基本操作。

實驗要求:程式設計實現順序棧的各種基本運算,並在此基礎上設計乙個主程式完成如下功能:

1、 採用鏈式儲存實現棧的初始化、判空、入棧、出棧操作。

實驗步驟及內容

typedef struct stacknode

stacknode,*linkstack;

2、棧的初始化,**如下:

//棧的初始化

void initstack(linkstack &top)

else

cout << "沒有記憶體可分配" << endl;

return top;

}5、出棧,從棧中刪除乙個結點。首先我們必須開闢乙個結點用來儲存top結點的下乙個結點,然後將top->next 執行下下乙個結點,這樣就刪除了乙個結點。

int pop(linkstack &top)

return data;

}6、列印棧,此函式用來對棧進行輸出驗證。

//列印函式

void print(linkstack &top)}}

7、去棧頂元素,如果不為空則取出棧頂元素。

//取棧頂元素

int stacktop(linkstack &top)

8、獲取棧的長度,必須臨時開闢乙個新的結構體指標,作為top的副本,這樣就不會破壞top本身的結構了,而且對於top的副本,我們也不能對其空間進行釋放,不然top的最後乙個next不會為null,而是乙個不確定的值,這樣對以後的操作造成破壞。

//獲得棧的長度

int stacklength(linkstack &top)

return length;

9、銷毀棧,就是從棧頂開始乙個節點乙個節點的釋放。

//銷毀棧

void destroystack(linkstack &top)

cout << "銷毀成功!" << endl;

}鍊錶可以往後插,也可以往前插。

如果我們用 每次往後用p - > next = null;叫做 往後插。

C 棧的基本操作

標頭檔案 include 基本函式 s.push item 將item壓入棧頂 s.pop 刪除棧頂的元素,但不會返回 s.top 返回棧頂的元素,但不會刪除 s.size 返回棧中元素的個數 s.empty 檢查棧是否為空,如果為空返回true,否則返回false用法 include includ...

棧的基本操作(C語言)

include include define stack init size 20 初始記憶體單元個數 define stack dila size 10 擴容需增加的記憶體單元個數 typedef double elemtype 方便改動資料型別 typedef struct 棧的結構體 sqst...

C 順序棧基本操作

1 include 2 define stacksize 50 設棧中元素個數為50個 3using namespace std 45 struct seqstack6 1011 構造乙個空棧 12 void initstack seqstack s 1316 17 將x置入s棧新棧頂 18 boo...