顺序栈的建立及操作
问题:建立顺序栈还是比较简单的。主要是一开始在入栈操作中每次调用初始化栈函数,结构出错。
代码:
#include <iostream> #include <cstdlib> using namespace std; #define MAXSIZE 20 typedef struct SeqStack { int stack [MAXSIZE]; int top; }*stackNode; void initStack(stackNode &stack) { stack=(stackNode) malloc ( sizeof ( struct SeqStack)); if (!stack) { cout<< "allocate fail" <<endl; exit (EXIT_FAILURE); } else { stack->top=-1; } } void pushStack(stackNode stack, int elem) { if (stack->top==MAXSIZE) { cout<< "stack is full" <<endl; exit (0); } else { stack->stack[++(stack->top)]=elem; } } int popStack(stackNode stack) { int elem; if (stack->top==-1) { cout<< "栈已空" <<endl; return -1; } elem=stack->stack[stack->top]; --stack->top; return elem; } int topStack(stackNode stack) { int top; if (stack->top==-1) { cout<< "栈已空" <<endl; return -1; } top=stack->stack[stack->top]; return top; } void showStack(stackNode stack) { if (stack->top==-1) { cout<< "栈已空" <<endl; exit (-1); } while (stack->top!=-1) { cout<<stack->stack[stack->top]<< "--" ; --stack->top; } cout<<endl; } int main() { stackNode stack=NULL; int top; int arr[]={1,3,5,6,7,2,9,8}; initStack(stack); cout<< "入栈:" <<endl; for ( int i=0;i<8;i++) { pushStack(stack,arr[i]); } top=topStack(stack); cout<< "top=" <<top<<endl; cout<< "出栈元素为" <<popStack(stack)<<endl; cout<< "出栈元素为" <<popStack(stack)<<endl; cout<< "入栈:" <<endl; pushStack(stack,16); pushStack(stack,19); top=topStack(stack); cout<< "top=" <<top<<endl; cout<< "遍历栈中的元素:" ; showStack(stack); return 0; } |
运行截图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述