多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 每日一題18:棧

每日一題18:棧

來源:程序員人生   發布時間:2015-04-29 08:36:39 閱讀次數:2409次

用C++寫了1個棧模板,其間用了1些《Effective C++》的準則,記錄在這里嘍。這個類還沒有做到異常安全,以后改進!
Stack.h文件。

#ifndef _STACK_H_ #define _STACK_H_ namespace MyDataStructure { template <typename T> class Stack { private: int Capacity; int Top; T* Vals; bool null() { return Capacity == 0; } void init(int capacity) { Capacity = capacity; Top = 0; Vals = new T[capacity]; } void copy(const Stack& s) { Capacity = s.Capacity; Top = s.Top; Vals = NULL; if(s.Capacity != 0) { Vals = new T[Capacity]; memcpy(Vals,s.Vals,Capacity*sizeof(T)); } } void destroy() { if(Vals != NULL) delete []Vals; Top = 0; Capacity = 0; } public: Stack() : Capacity(0),Top(0),Vals(NULL){}; Stack(int capacity) :Capacity(capacity),Top(0) { Vals = new T[capacity]; } Stack(const Stack& s) { copy(s); } Stack& operator = (const Stack& s) { if(this == &s) return *this; destroy(); copy(s); return *this; } ~Stack() { destroy(); } bool resize(int capacity) { if(capacity <= 0) return false; if(capacity == Capacity) return true; if(!null()) { T* vals = new T[capacity]; if(capacity >= Top) { memcpy(vals,Vals,Top*sizeof(T)); } else { memcpy(vals,Vals,capacity*sizeof(T)); Top = capacity; } Capacity = capacity; delete []Vals; Vals = vals; } else init(capacity); return true; } bool push(T val) { if(!full() && !null()) { Vals[Top++] = val; return true; } return false; } bool pop(T& val) { if(!null() && !empty()) { val = Vals[--Top]; return true; } return false; } bool top(T &val) { if(!null() && !empty()) { val = Vals[Top - 1]; return true; } return false; } void clear() { Top = 0; } void size() { return Top; } bool empty() { return Top == 0; } bool full() { return Top == Capacity; } }; } #endif

下面是測試函數:
StackTest.cpp

// StackTest.cpp : 定義控制臺利用程序的入口點。 // #include "stdafx.h" #include "Stack.h" #include <iostream> using namespace MyDataStructure; using namespace std; int _tmain(int argc, _TCHAR* argv[]) { Stack<int> s1(10); for (int i = 1; i < 11; ++i) { s1.push(i); } Stack<int> s2(s1); s1.resize(20); for (int i = 1; i < 11; ++i) { int val; if(s1.pop(val)) { cout<<val<<' '; } } cout<<endl; for (int i = 1; i < 11; ++i) { int val; if(s2.pop(val)) { cout<<val<<' '; } } cout<<endl; return 0; }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 午夜免费啪在线观看视频网站 | 国产亚洲欧美日韩俺去了 | 国产美女精品自拍 | 无遮挡很爽很污很黄很色的网站 | 男人看片网站 | 欧洲精品一区二区 | 中文字幕亚洲综合精品一区 | 国产成a人亚洲精v品久久网 | 日本一区2区 | 欧美疯狂 | 欧美极品videosvideo激情 欧美极品video粗暴 | 最近视频中文在线播放 | 欧美一级二级毛片视频 | 成人αv | 黄色a一片 | 亚洲美女又黄又爽在线观看 | 久久国产精品久久精 | 亚洲欧美日韩中文综合v日本 | 亚洲综合无码一区二区 | 欧美一级视 | 国产午夜精品久久久久免费视 | 国内精品一区二区三区 | 2020亚洲天堂 | 伊久久| 亚洲免费午夜视频 | 三级小视频在线观看 | 国产理论自拍 | 最近伦中文字幕高清字幕mv | 精品国产看高清国产毛片 | 国产精品亚洲专一区二区三区 | 一区二区三区在线免费 | 欧美成人h版 | 欧美高清一级啪啪毛片 | 国产亚洲精品一区二区 | 欧美视频在线观看xxxx | 国产精品嫩草影院在线播放 | 亚洲永久免费视频 | 亚洲a级| 美日韩在线 | 国产欧美日韩精品一区二 | 中文乱码35页在线观看 |