說起stack,可能很多人都寫過,但是這是我第一次寫,而且出錯率特別高;
那麼首先看看什麼是stack;
棧stack是乙個「先進後出」的容器;
a、棧是只能在某一端插入和刪除的特殊線性表。
b、先堆進來的壓在底下,隨後乙個乙個往上堆。取走時,只能從上面乙個乙個取。讀和取都在頂部進行,底部一般是不動的。
c、棧就是一種類似桶堆積物品的資料結構,進行刪除和插入的一端稱棧頂,另一端稱棧底。插入一般稱為進棧,刪除則稱為退棧。 棧也稱為後進先出表。
以下是我對於此次**的分析和總結;
1).h檔案
定義模板類:
template
t>
class
stack{};
定義類的私有的成員變數:
t* _pdata;//指向棧頂
size_t _size; //找當前的大小
size_t _capacity; // 棧總的大小
對於stack,我們要完成它以下的幾個功能:
stack();
stack(const stack& s);
stack& operator=(const stack& s);
void push(const t& data);
void pop();
bool empty()const;
t& top();
size_t size()const;
~stack();
上面這些功能都很好實現,但是你對於其中有乙個功能的實現讓我很頭疼,這就是checkcapacity():
void checkcapacity() //檢查記憶體是否分配夠,不夠時擴充套件記憶體
delete pcur; //刪除舊空間
_capacity = newcapacity;
//_pdata=_pdata+_size;//這句話的出現和建構函式的不要重複}}
以下是建構函式的實現:
//初始化列表時不要把 _pdata(pdata)寫成_pdata=pdata
stack(size_t size)
:_pdata(null)
,_size(size)
,_capacity(10)
}
析構函式的實現:
~stack() //析構函式
}
拷貝建構函式:
stack(const stack
& s) //拷貝建構函式
}
賦值運算子過載的實現:
stack& operator=(const stack& s) //賦值運算子過載
return *this;
}
進棧:
void push(const t& data)
出棧:
void pop() //出棧
訪問棧頂:
t& top( ) //訪問棧頂
判空:
bool empty()const
//判空
棧中實際元素個數:
size_t size()const
//棧得到大小
和棧實際分配記憶體空間:
size_t capacity
()
銷毀棧:
bool destroystack()
返回棧中的元素:
t& get()
列印棧中的所有元素:
void print()//輸出
cout
<< endl;
}
2).cpp檔案
為什麼我要發測試**,就是有時候可能會在類外使用物件呼叫類的室友成員變數:
s是我定義的乙個物件
s. _pdata;//指向棧頂
s. _size; //找當前的大小
s. _capacity; // 棧總的大小
向這樣的寫法是完全錯誤的,在測試**中呼叫類的私有成員是不被允許的,所以最好在類中定義函式在獲取他們 t& get()和getsize()等。
以下是我的測試**:
int size=0
; stacks(size);
s.push(1);
s.push(2);
s.push(3);
s.push(4);
s.push(5);
s.push(6);
s.push(7);
s.push(8);
s.size();
s.pop();
s.print();
s.top();
stacks1(size);
s1=s;
cout<.size>
s1.print();
s1.pop();
cout<.size>
s1.print();
stacks2(s);
cout<.size>
s2.print();
那麼以下是我執行的結果:
Stack與Queue的實現(c 模板實現)
include include using namespace std template 類模板 class stack void pop void push t temp int size int main void include include using namespace std temp...
C 利用模板實現佇列
這個 的實現主要使用了類模板以及模板函式,友元,成員模板以及成員模板函式。這裡需要注意的時,類的成員函式在實現的時候必須滿足以下幾點 1 必須以template開始,後接模板形參表 2 必須指出是那個類成員 3 類名必須包含模板形參 具體的格式如下 templatereturn type queue...
利用excel模板實現快速的匯出
專案中利用的框架是springboot,實現便捷開發。下面是部分 從controller中匯出功能 檔名稱 string filename exprot.xls 內容 mapbean new hashmap suppresswarnings unchecked listtax taxinformat...