棧是一種先進後出的結構
可利用陣列來構造乙個順序棧
最先開始編寫的**遇到的問題:
初始定義函式的引數沒有用指標,導致在主函式內的相關值並未改變。即在initstack呼叫後,cout;void
initstack
(stack a)
在這裡插入**片後經過改變,將區域性函式的引數變為指標,即可較好的完成任務。
#include
using
namespace std;
typedef
int elementtype;
#define stacksize 100
int increase=
100;
//順序棧的實現 (top標誌指向棧頂元素上乙個單位)
struct stack
;void
initstack
(stack *a)
bool
push
(stack *a,elementtype e)
a->st[a-
>top]
=e;(a-
>top)++;
cout<>top;
return
true;}
elementtype pop
(stack *a)
}bool
destroy
(stack *a)
elementtype gettop
(stack *a)
}bool
showstack
(stack *a)
if(i<
0) cout<<
"the end"
true;}
intmain()
}return0;
}
動態陣列構建與動態記憶體分配
1.靜態陣列的長度必須事先指定,且陣列長度只能是長整數,不能是變數。2.給靜態陣列分配的記憶體無法手動釋放,直到程式執行完畢,陣列占用的記憶體空間才會被系統釋放。3.陣列長度一旦固定,其長度就不能再更改。4.靜態陣列不能跨函式呼叫 為什麼需要動態記憶體分配?因為通過動態記憶體分配構建動態陣列很好的解...
C 動態記憶體使用
在c 中,直接對動態記憶體的管理是通過運算子new和delete來完成的。一 使用new動態分配和初始化物件的幾種方式 1.預設情況下,動態分配的物件是預設初始化的,故內建型別或組合型別的物件的值是未定義的,類型別物件將用預設建構函式進行初始化 int pi new int pi指向乙個動態分配的,...
C 動態記憶體和動態陣列
全域性物件在程式啟動時分配,在程式結束時銷毀。區域性自動物件,當我們進入其定義所在的程式塊時被建立,在離開塊時銷毀。區域性 static 物件在第一次使用前分配,在程式結束時銷毀 靜態記憶體用來儲存區域性static物件,類static 資料成員,以及定義在任何函式之外的變數。棧記憶體用來儲存定義在...