数据结构之链栈
来源:互联网 发布:封印者n卡优化 编辑:程序博客网 时间:2024/06/01 09:13
#include <stdio.h>#include <stdlib.h>typedef struct StackNode{ int data; struct StackNode *next;}T_StackNode,*PT_StackNode; typedef struct LinkStack{ PT_StackNode top; int count;}P_LinkStack,*PT_LinkStack;int InitStack(PT_LinkStack *S){ *S = (PT_LinkStack)malloc(sizeof(struct LinkStack)); (*S)->top = NULL; (*S)->count = 0; return 1;}int ClearStack(PT_LinkStack s){ PT_StackNode p; while(s->top) { p = s->top; s->top = s->top->next; s->count--; free(p); } return 1;}int DestroyStack(PT_LinkStack S){ ClearStack(S); free(S); return 1;}int StackEmpty(PT_LinkStack S){ if(S->top)/*栈存在且非空*/ return 0; else return 1;}int GetTop(PT_LinkStack S,int *e){ if(!S->top)return 0; *e = S->top->data; return 1;}int Push(PT_LinkStack S,int e){ //printf(" push begin"); PT_StackNode p = (PT_StackNode)malloc(sizeof(struct StackNode)); p->data = e; p->next = S->top; S->top = p; S->count++; //printf(" push ok"); return 1;}int Pop(PT_LinkStack S,int *e){ PT_StackNode p; if (!GetTop(S,e)) return 0; p = S->top; S->top = S->top->next; S->count--; free(p); return 1;}int StackLength(PT_LinkStack S){ return S->count;}int StackTraverse(PT_LinkStack S,int (* visit)(int)){ PT_StackNode p; p = S->top; while(p){ visit(p->data); p = p->next; } printf("\n"); return 1;}int visit(int e){ printf("%d ",e); return 1;}int main(void){ int e,i; PT_LinkStack s; printf("InitStack初始化栈并将1--12压入栈\n"); if(InitStack(&s)) for(e = 1; e <= 12; e++) { Push(s,e); } printf("StackTraverse栈中元素从栈顶依次为:\n"); StackTraverse(s,visit); Pop(s,&e); printf("Pop弹出的元素为:%d\n",e); Pop(s,&e); printf("Pop又弹出的元素为:%d\n",e); printf("Push将刚刚弹出的元素%d再次压入\n",e); Push(s,e); printf("StackEmpty判断栈是否为空:%d(1:是 0:不是)\n",StackEmpty(s)); GetTop(s,&e); printf("GetTop当前栈顶元素为:%d\n",e); printf("StackLength:当前栈长度为%d \n",StackLength(s)); ClearStack(s); printf("ClearStack栈清空后,StackEmpty栈是否为空%d(1:是 0:不是)\n",StackEmpty(s)); DestroyStack(s); printf("DestroyStack栈销毁"); return 0;}
0 0
- 数据结构之链栈
- 数据结构之链栈
- 数据结构之链栈
- 数据结构之链栈
- 数据结构之链栈
- 数据结构之链栈
- 数据结构之链栈
- 数据结构之链栈
- 数据结构之链栈实现
- 数据结构之链栈07
- 数据结构之链栈(参考整理严蔚敏数据结构)
- 数据结构——栈之链栈
- 数据结构之链栈 C++实现
- 简单数据结构的实现之链栈
- 数据结构学习之链栈c++实现
- 数据结构C语言实现之链栈
- 数据结构之 链栈的实现
- 【数据结构】之链栈的java实现
- 封装一个类:软键盘弹出,将控件整体顶上去
- js 跨域
- 如何在水经注会员中心购买流量下载地图
- vmware 解决"二进制转换与此平台上的长模式不兼容"
- OpenGL Direct3D(DirectX)区别
- 数据结构之链栈
- mui退出软件点击两次提示
- 添加vcenter用户修改密码
- LINUX系统中安装Redis3.2.8
- redis 值 hiredis (c/c++)
- 导航栏标题不居中的解决办法
- 数据库查询语言/SELECT
- Day2—仙剑游侠传游戏Demo,主角配角
- 从输入url到页面展示到底发生了什么