stack.h中宣告了stack類,在stack.cpp中進行了定義
stack的私有成員包括data指標,指向棧,tot指的是開闢總的空間,pointer指向類裡面元素的位置
stack有兩個建構函式:不傳參開闢大小為10的陣列,傳參按照引數開闢陣列
stack有兩個狀態函式判斷棧是否為空或滿(empty() full())
stack功能:
push:未滿存入目標元素,滿了開闢兩倍大小的陣列再存入目標元素
pop:棧為空直接退出,否則拋棄棧頂元素
get():用於得到第i個元素,預設為0
size():得到棧元素總數
過載:得到下標元素的值
print函式輸出棧內所有元素,從棧底開始
stack.h
#ifndef stack_h
#define stack_h
template class stack
bool full() //判斷棧是否已滿
int size();
t& operator (int i); //運算子過載
void print();
~stack();
};#endif /* stack_h */
stack.cpp
#include "stack.h"
#include
#include
using
namespace
std;
template
void stack:: print() //輸出當前棧內所有元素
template
stack:: stack() : tot(10), pointer(0) //不帶引數的建構函式
template
t stack:: get(int i) //帶引數的建構函式
template
void stack:: push(const t &i)
else
//滿了開闢兩倍空間並複製原來的元素最後還複製回data
}template
t stack:: pop()
template
t& stack:: operator (int i)
template
int stack:: size()
template
stack:: stack (int cnt) : tot(cnt), pointer(0)
template
stack:: ~stack()
smain.cpp
#include
#include
#include "stack.h"
#include "stack.cpp"
using
namespace
std;
int main()
smain函式的測試
兩個不帶引數的int型物件obj1,obj2。obj2沒有push任何元素,pop()失敗。obj2將0~199
push進去並進行下面的測試
測試測試size()
測試get(2)
測試pop刪除
再次測試size()
測試get() 預設為第0個
測試get(3)
char型的obj3從a開始按順序push了20個大寫字母
測試size
測試測試get() 預設第0個
測試get(2)
測試pop
再次測試size
char型的obj4(5) (指定開闢空間為5)push了h e l l o
測試print函式
測試obj4
最後輸出為:
obj1[0] = 199
obj1.size() = 200
197obj1.size() = 199
198195
obj3.size() = 20
obj3[0] = ttr
obj3.size() = 19
hello
C 棧的簡單介紹
棧 stack 代表了乙個只有乙個出口的後進先出的物件集合。在列表中新增一項,稱為推入元素,從列表中移除一項時,稱為彈出元素。stack類 public class stack ienumerable,icollection,ienumerable count 獲取 stack 中包含的元素個數 p...
2 C 實現簡單的棧
2.編寫乙個類,實現簡單的棧。棧中有以下操作 元素入棧 void push int 元素出棧 void pop 讀出棧頂元素 int top 判斷棧空 bool emty 判斷棧滿 bool full 如果棧溢位,程式終止。棧的資料成員由存放 10個整型資料的陣列構成。先後做如下操作 建立棧 將10...
棧的簡單總結(順序棧)
棧結構的特點 棧是線性表結構的一種,但是棧結構的插入與刪除操作都只能從同一端進行,所以棧結構是一種受限制的線性表結構,資料的插入與刪除符合lifo的原則 也就是後進先出,先進後出 棧的結構 對棧進行插入與刪除操作的一端稱為棧頂 top 另一端則稱為棧底 base 棧的進本操作 棧的基本操作有向棧中壓...