栈的c语言实现
2015-06-27 23:52
579 查看
C语言实现代码
#include<iostream> using namespace std; #define STACK_INIT_SIZE 10 #define STACKINCREMENT 10 #define ElemType int typedef struct { ElemType *base; int top; size_t capacity; }SqStack; bool IsFull(SqStack *st) { return st->top >= st->capacity; } bool IsEmpty(SqStack *st) { return st->top == 0; } bool InitStack(SqStack *st) { st->base = (ElemType*)malloc(STACK_INIT_SIZE * sizeof(ElemType)); st->top = 0; st->capacity = STACK_INIT_SIZE; return true; } ElemType GetTop(SqStack *st) { if(!IsEmpty(st)) { return st->top; } cout<<"stack empty!"<<endl; return -1; } void Push(SqStack *st, ElemType item) { if(!IsFull(st)) { st->base[st->top++] = item; } else { cout<<"stack full!"<<endl; } } void Show(SqStack *st) { for(int i=st->top-1; i>=0; --i) { cout<<st->base[i]<<" "; } cout<<endl; } ElemType Pop(SqStack *st) { if(!IsEmpty(st)) { st->top--; return st->base[st->top]; } return -1; } int main() { SqStack st; InitStack(&st); int i = 0; for(; i<5; ++i) Push(&st,i); Pop(&st); Show(&st); return 1; }
c++实现代码:
#include<iostream> using namespace std; #define ElemType int #define STACK_INIT_SIZE 10 template<class _Ty> class stack { public: stack():top(-1),capacity(STACK_INIT_SIZE) { base = new ElemType[capacity]; } ~stack() { delete []base; } bool IsEmpty() { return top == -1; } bool IsFull() { return top == capacity-1; } bool Push(_Ty item) { if(!IsFull()) { base[++top] = item; return true; } cout<<"stack full! increment base..."<<endl; return false; } bool Pop() { if(!IsEmpty()) { base[top--]; return true; } return false; } _Ty GetTop() { if(!IsEmpty()) { return base[top]; } return -1; } int Show() { int i =top; for(; i>=0; --i) cout<<base[i]<<" "; cout<<endl; return 1; } private: ElemType *base; int top; size_t capacity; }; int main() { stack<int> st; int i = 0; for(; i<5; ++i) st.Push(i); st.Pop(); st.Show(); cout<<st.GetTop()<<endl; return 1; }
相关文章推荐
- c++ 专题一 函数的升级1
- leetcode 日经贴,Cpp code -Summary Ranges
- 【学习笔记】【C语言】结构体
- C++第三章、实验2
- OC基础语法-1.OC和C语言的对比
- C语言——将宏作为头文件,包含在用户程序中
- vim之AutoComplPop和OmniCppComplete的安装和使用
- 设计模式------------抽象工厂模式
- 【Remove Duplicates from Sorted List 】cpp
- 谁拿了最多奖学金(C语言)
- C语言——预处理命令(宏)有些问题,宏和函数都可以
- leetCode-Add Binary(c++)
- 文件夹创建以及文件删除C语言实现
- c语言模拟函数画图
- C++中的sort函数
- C++13.3 析构函数destructor
- C语言qsort
- C++设计模式-Proxy代理模式
- 黑马程序员-OC语言-ios第二天笔记总结
- C/C++大小端模式与位域