2.1链式栈
2015-09-25 17:11
363 查看
#include<iostream> using namespace std; //结点结构 typedef struct node { int data; struct node *next; }StackNode,*PStackNode; //栈 typedef struct { PStackNode top; }LinkStack,*PLinkStack; //初始化栈 PLinkStack Init_LinkStack(void) { PLinkStack S; S=(PLinkStack)malloc(sizeof(LinkStack)); if(S) { S->top=NULL; } return S; } //判断栈空(是否有元素) int Empty_LinkStack(PLinkStack S) { return (S->top==NULL); } //入栈(在栈顶插入元素) int Push_LinkStack(PLinkStack S,int x) { PStackNode p; p=(PStackNode)malloc(sizeof(StackNode)); if(!p) { cout<<"内存溢出"; return 0; } p->data=x; p->next=S->top; S->top=p; return 1; } //出栈(删除顶部元素) int Pop_LinkStack(PLinkStack S,int *x) { PStackNode p; if(Empty_LinkStack(S)) { cout<<"栈空,不能出栈"; return 0; } *x=S->top->data; p=S->top; S->top=S->top->next; free(p); return 1; } //取栈顶元素(不删除) int GetTop_LinkStack(PLinkStack S,int *x) { if(Empty_LinkStack(S)) { cout<<"栈空"; return 0; } *x=S->top->data; return 1; } //销毁栈 void Destroy_LinkStack(PLinkStack *LS) { PStackNode p,q; if(*LS) { p=(*LS)->top; while(p) { q=p; p=p->next; free(q); } free(*LS); } *LS=NULL; return ; } int main() { PLinkStack S; S=Init_LinkStack(); Destroy_LinkStack(&S); return 0; }
相关文章推荐
- HttpClient和HtmlUnit的比较总结以及使用技巧(一)
- C# 如何调用可执行程序传参
- HTML 各种鼠标手势
- Iso language code table之(软件国际化)
- 类型强制转换的理解
- app与PC端session
- 【Android应用开发】Android Studio 简介 (Android Studio Overview)
- 【Android应用开发】Android Studio 简介 (Android Studio Overview)
- 安卓学习之路之广播
- 缓存一致性和访存顺序的区别
- JQuery 取值.赋值的基本方法整理
- 绝对的好东西
- 安装windows版node.js
- 安装ssh登陆其它机器
- ubuntu LVM搭建
- C# .net设置系统音量
- PostgreSQL 资源
- SecureCRT 绝佳配色方案, 保护你的眼睛
- LeetCode----Reverse Linked List
- IOS 文件管理,基础使用