自己写的一个基于数组实现的栈,欢迎大家批评指正,共同进步
来源:互联网 发布:查看知乎匿名用户 编辑:程序博客网 时间:2024/05/16 05:46
头文件:
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
#pragma once
template<typename T>
class Stack{
public:
Stack(void);
~Stack(void);
private:
T* arr;
static const int EVERY_SIZE = 100;
int capacity;
int top;
void applyNewCapacity();
public:
void push(T element);
T topE();
T pop();
void printStack();
int size(){return top+1;}
};
实现文件:
#include "Stack.h"
template<typename T>
Stack<T>::Stack(void):capacity(0),top(-1),arr(NULL){
}
template<typename T>
void Stack<T>::applyNewCapacity(){
T* newArr = (T*)malloc((capacity+EVERY_SIZE)*sizeof(T));
memset(newArr,0,(capacity+EVERY_SIZE)*sizeof(T));
if(arr){
memcpy(newArr,arr,capacity*sizeof(T));
free(arr);
}
arr = newArr;
capacity+= EVERY_SIZE;
}
template<typename T>
Stack<T>::~Stack(void){
if(arr) free(arr);
}
template<typename T>
void Stack<T>::push(T element){
if(++top >= capacity){
this->applyNewCapacity();
}
arr[top] = element;
}
template<typename T>
T Stack<T>::topE(){
if(top<0){
cout<<"under flow"<<endl;
return NULL;
}
return arr[top];
}
template<typename T>
T Stack<T>::pop(){
if(top<0){
cout<<"under flow"<<endl;
return NULL;
}
T temp = arr[top--];
return temp;
}
template<typename T>
void Stack<T>::printStack(){//from top to btm
for(int i=top; i>=0; i--){
cout<<arr[i]<<endl;
}
}
void main(){
Stack<int> st;
st.push(23);
st.push(54);
st.push(123);
st.printStack();
int top = st.topE();
cout <<"top "<<top<<endl;
int pop = st.pop();
cout <<"pop: "<<pop<<endl;
st.printStack();
cin.get();
}
- 自己写的一个基于数组实现的栈,欢迎大家批评指正,共同进步
- 开始写博客,欢迎大家批评指正
- 计算机中浮点数的存储方式-自己整理,欢迎大家批评指正
- 插入排序的一种实现方法,欢迎批评指正!
- 欢迎批评指正我的博客
- 关于微软的OBA架构理解(欢迎大家批评指正^_^)
- 结构体数组做映射(写了个风格还算靠谱的程序, 欢迎大家找茬拍砖, 共同进步)
- 开通自己的技术博客了,欢迎大家前来指正
- 各大it企业编程笔试题,答案自己做的,大家批评指正(更新中)
- 自己写的一个数组与list转化工具,请大神指正问题
- 内部UML培训文件,欢迎大家批评指正
- 刚做了一个小程序,望大家批评指正!
- 词法分析器 (SNL语言) 自己写的,拿出来大家一起分享,指正
- 三点画弧(呵呵,这是我自己写的,请大家指正)
- 自己写的用java生成XML代码,不足之处请大家指正
- 剑指Offer22题栈的压入、弹出序列 java解答(如有错误欢迎批评指正)
- 各种猥琐的Java笔试/面试题目的答案(这是我自己测试得出的答案,如有不对的欢迎批评指正)
- 关于最大公约数和最小公倍数的算法(自己写的一个,欢迎大家吐槽)
- UTF-8 GBK UTF16 GB2312 之间的区别和关系
- C++中string.h自编的几个函数
- 【100题】第六十题 删除链表结点要求O(1)时间复杂度
- PADS中关于元件标号的修改与双向同步
- 一种移动APP统计平台的架构方案(适用于千万级用户的应用)
- 自己写的一个基于数组实现的栈,欢迎大家批评指正,共同进步
- 解决关键路径的问题,轻松了
- hdu 4390
- ios 进阶 -- 开机视频
- 由斯坦福大学神经系统科学家全明星打造的益智游戏Lumosity
- Git学习教程(四):分枝和合并
- Lubuntu12.04安装wxpython及examples(demo)
- Amazing Function of SQL
- shell学习笔记