线性表(特殊)-Stack(栈)
1:顺序栈-数组
2:链栈
#define initSize 20 typedef struct stackNode { int data; int lenth; struct stackNode *next; }linkStack;
定义操作初始化栈
int initStack(linkStack &stack) { stack= (linkStack *) malloc(sizeof(linkStack)); if (!stack)return 0; //内存分配失败,存储空间不够 stack.length = 1; return 1; }
入栈 返回栈顶
linkStack *push(linkStack *top,int a) { linkStack *p=(linkStack *)malloc(sizeof(linkStack)); p->data=a; p->next=top; top=p; return top; }
出栈 返回栈顶
linkStack *pop(linkStack *top) { if(top) { linkStack *p=top; top=top->next; printf("弹栈元素:%d ",p->data); if (top) { printf("栈顶元素:%d\n",top->data); }else{ printf("栈已空\n"); } free(p); } else { printf("栈内没有元素"); return top; } return top; }
判断栈是否为空
int isEmptyStack(Stack stack) { return stack.length; }
访问栈顶元素:
取出栈顶元素,传值给形参elem,但不删除栈顶元素。由于采用的是引用的方式,
因此形参值的改变可以传给实参。
int top(Stack stack, int &elem) { if (stack.length == 0)return 0; elem = stack.elem[stack.length - 1]; return elem; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?