一、什麼是棧
棧(stack)又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
棧可以是個容器,並且這個容器存放元素的特點是
先進後出
棧的介面有 :
push(); //將元素壓入棧
pop(); //刪除棧頂元素
top(); //讀取棧頂元素
size(); //棧內元素的個數
empty(); //棧是否為空,為空返回1,否則返回0
二、棧的實現
棧:(1)靜態棧:
優點:實現簡單。
缺點:棧大小固定,當空間存滿後無法再存,或給的空間太大浪費空間
(2)動態棧
缺點:相比靜態棧**實現複雜容易出錯
優點:大小不固定,當記憶體不足時可自己開闢空間
動態棧的實現:
#define max_stack 3 //1.動態棧
templateclass stack
void push(const t& data) //元素入棧
void pop() //頂部元素出棧
t top() //讀取頂部元素
t top()const
size_t size()const //獲取當前元素個數
bool empty()const //判斷棧是否為空
private:
void checkcapacity() //增容函式
}} t* _array;
size_t _capacity;
size_t _size;
};
棧的呼叫:
int main()
{ stacks;
s.push(1); //壓棧
s.push(2); //壓棧
s.push(3); //壓棧
s.push(4); //壓棧
s.push(5); //壓棧
cout << s.size() << endl; //棧內元素個數
cout<
C 建立動態陣列
int sum 0 arraylist al new arraylist private void button1 click object sender,eventargs e while str null str string line new string al.count 1 al.copy...
C 建立動態陣列
每乙個程式在執行時都占用一塊可用的記憶體空間,用於存放動態分配的物件,此記憶體空間成為程式的自由儲存區或堆。c 使用new和delete表示式實現咋說自由儲存區內分配儲存空間。陣列變數通過指標型別 陣列名稱 和維數來定義。而動態分配陣列時,只需要指定型別和陣列長度,不必為陣列物件命名,new表示式返...
C 建立動態陣列
靜態陣列放在堆疊,動態陣列放在堆 自由儲存區 c語言建立動態陣列 int p int malloc n sizeof int free p c 建立動態陣列 int pia new int n 內建型別沒有初始化 string psa new string 10 預設的建構函式初始化 int pia...