ADT - 栈(Stack)
2017-09-25 16:34
239 查看
仅供参考,正确性有待检查(QAQ)
/ADT SqStack #include<iostream> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define INITLENGTH 100 #define INCREASESIZE 10 using namespace std; typedef int SElemType; typedef int Status; typedef struct { SElemType *base;//栈底地址 SElemType *top;//栈顶地址 int stacksize;//栈容量 }SqStack; //初始化空栈 Status InitStack(SqStack &S) { S.base = (SElemType *)malloc(sizeof(SElemType) * INITLENGTH); if (!S.base)exit(OVERFLOW); S.top = S.base; S.stacksize = INITLENGTH; return OK; } //清空栈 Status ClearStack(SqStack &S) { S.top = S.base; return OK; } //销毁栈 Status DestroyStack(SqStack& S) { free(S.base); S.top = S.base = NULL; S.stacksize = 0; return OK; } //栈扩容 void IncStackSize(SqStack &S) { S.base = (SElemType *)realloc(S.base, sizeof(SElemType)*(S.stacksize + INCREASESIZE)); S.stacksize += INCREASESIZE; } //压栈 Status Push(SqStack &S, SElemType e) { if (S.stacksize == S.top - S.base) IncStackSize(S); *(S.top++) = e; return OK; } //出栈 Status Pop(SqStack &S, SElemType &e) { if (S.top == S.base) return ERROR; e = *(--S.top); return OK; } //判栈空 Status IsEmpty(SqStack &S) { return S.top == S.base ? TRUE : FALSE; } //返回栈深 int StackLength(SqStack &S) { return S.top - S.base; } //获取栈顶元素 Status GetTop(SqStack &S, SElemType &e) { if (S.top == S.base)return ERROR; e = *(S.top - 1); return OK; } //栈元素遍历输出 Status StackPrint(SqStack &S) { if (S.top == S.base)return ERROR; SElemType *curPtr; curPtr = S.base; while(curPtr < S.top) { if (curPtr == S.base)cout << *(curPtr); else cout << ' ' << *(curPtr); curPtr++; } cout << endl; return OK; }
相关文章推荐
- 链表实现stack和queue,java实现(ADT思想)
- 看你的ADT版本及对其升级
- stack
- 28STL之Stack
- stackless vs greentlet source
- 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
- 解除ServiceStack.Text免费配额限制
- stack over flow
- 环境: ubuntu 12.04 上面Android ndk 开发环境一键配置(cdt, adt, ndk 及Ogre工程移植)
- [转]Windows下Redis缓存服务器的使用 .NET StackExchange.Redis Redis Desktop Manager
- [Android] ViewStack演示
- IT公司100题-2-设计带min函数的stack
- hirbernate出现StackOverflowError
- img图片没找到onerror事件 Stack overflow at line: 0
- Wargames:io.smashthestack Level 1
- 225.Implement Stack using Queues(C语言版本)
- Z-Stack Developer's Guide
- saltstack安装配置(master&minion)
- GOLANG 实现Stack和Queue
- windows7不支持AllocateAndGetTcpExTableFromStack