C++实现链栈的基本操作:初始化、入栈、出栈、遍历
#include "iostream"\nusing namespace std;\n\n#define MAXSIZE 100\n\n#define OK 1\n#define ERROR 0\ntypedef int Status;\ntypedef char sElemType;\ntypedef struct\n{\n sElemType data[100];\n int top;\n} sqStack;\n\nStatus InitStack(sqStack &S)\n{\n S.top = -1;\n return -1;\n}\n\nStatus Push(sqStack &S, sElemType &e)\n{\n if(S.top == 99) return ERROR;\n S.top++;\n S.data[S.top] = e;\n return OK;\n}\n\nStatus Pop(sqStack &S, sElemType &e)\n{\n if(S.top == -1) return ERROR;\n e = S.data[S.top];\n S.top--;\n return OK;\n}\n\nsElemType GetTop(sqStack S)\n{\n if(S.top == -1) return ERROR;\n else return S.data[S.top];\n}\n\nStatus stackTraverse(sqStack S)\n{\n if(S.top == -1) return ERROR;\n for(int i = 0; i <= S.top; i++) cout << S.data[i];\n return OK;\n}\n\nint main()\n{\n sqStack sb;\n InitStack(sb);\n\n int n;\n cin >> n;\n string s;\n cin >> s;\n int len = s.size();\n for(int i = 0; i < len; i++)\n {\n char op;\n if(s[i] == '1')\n {\n Push(sb, s[i+1]);\n i++;\n }\n else if(s[i] == '0') Pop(sb, op);\n }\n int t = stackTraverse(sb);\n if(!t) cout << "Stack Empty!";\n return 0;\n}
原文地址: https://www.cveoy.top/t/topic/pJ7f 著作权归作者所有。请勿转载和采集!