数据结构之链栈的实现
2014-04-26 23:13
357 查看
/*************************栈的链式存储--链栈**********************/ #include"stdio.h" #include"stdlib.h" #define TRUE 1 #define FALSE 0 typedef int Status; typedef int ElemType; typedef struct StackNode { ElemType data; struct StackNode *next; }StackNode,*LinkStackPtr; typedef struct { LinkStackPtr top; int count; }LinkStack; /********************Operator****************************/ void InitStack(LinkStack *s) //初始化栈 { s->count=0; } Status Push(LinkStack *s, ElemType e) //入栈操作 { LinkStackPtr p; p=(LinkStackPtr)malloc(sizeof(StackNode)); p->data=e; p->next=s->top; s->top=p; s->count++; return TRUE; } Status StackEmpty(LinkStack s) //判断栈是否为空 { if(0==s.count) return TRUE; return FALSE; } Status Pop(LinkStack *s,ElemType *e) //出栈 { LinkStackPtr p; if(StackEmpty(*s)) return FALSE; *e=s->top->data; p=s->top; s->top=p->next; free(p); s->count--; return TRUE; } void PrintStack(LinkStack s) //打印栈 { LinkStackPtr p; p=s.top; while(s.count--) { printf("%6d",p->data); p=p->next; } printf("\n"); } main() { LinkStack *s; ElemType *e; s=(LinkStack*)malloc(sizeof(LinkStack)); e=(ElemType*)malloc(sizeof(ElemType)); InitStack(s); Push(s,15); Push(s,13); PrintStack(*s); Pop(s,e); PrintStack(*s); printf("%6d\n",*e); }
相关文章推荐
- 数据结构之链栈实现
- PHP实现文件下载
- [patterns & practices] Web 服务安全:场景、模式和实现指南
- 2.0方法1.0实现之Sprite类
- 用VB编写ActiveX DLL实现ASP编程
- 【转载】AJAX 实现的TreeView
- 临界区实现线程同步互斥
- [JS]实现点击一个单元格后对应的内容处于可编辑状【转载】
- 使用WSE实现Web Service安全
- 使用OpenCV实现运动背景的重建
- 利用C#实现分布式数据库查询
- .NET程序开发在c#中实现3层架构
- 实现ListView的SubItem重绘
- (转载)VC++双缓冲实现方法
- ASP 高级模板引擎实现类
- JQuery实现点击TreeView文本展开/折叠子节点
- 矩形和圆的相交检测 算法分析与实现
- JQuery实现个性化,可以拖拽 自定义自己的界面(二)
- JAVA缓存的实现
- 不通过 main 方法实现 Hello , world 的输出