链栈操作实现
2017-05-11 10:08
323 查看
#include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct linknode { ElemType data; struct linknode *next; }LiStack; /****************初始化链栈********************/ void InitStack(LiStack* &s) { s=(LiStack*)malloc(sizeof(LiStack)); s->next=NULL; } /****************销毁链栈********************/ void DestroyStack(LiStack* &s) { LiStack *p=s->next,*q=s; while(p!=NULL) { free(q); q=p; p=p->next; } free(p); } /****************判断链栈是否为空********************/ bool StackEmpty(LiStack* &s) { return (s->next==NULL); } /****************进栈********************/ void Push(LiStack* &s,ElemType &e) { LiStack *p; p=(LiStack*)malloc(sizeof(LiStack)); p->data=e; p->next=s->next; s->next=p; } /****************出栈********************/ bool Pop(LiStack* &s,ElemType &e) { LiStack *p=s->next; if(s->next!=NULL) return false; else { e=p->data; s->next=p->next; free(p); return true; } } /****************得到栈顶元素********************/ bool GetTop(LiStack* &s,ElemType &e) { LiStack *p=s->next; if(s->next==NULL) return false; e=p->data; return true; } /****************输出链栈元素********************/ void PrintStack(LiStack* &s) { LiStack *p=s->next; while(p!=NULL) { printf("%d ",p->data); p=p->next; } } int main() { LiStack *s; int a=9; InitStack(s); Push(s,a); PrintStack(s); }
相关文章推荐
- 链栈的基本操作实现
- [数据结构]c语言实现链栈的入栈,出栈,清空,销毁等操作
- 数据结构顺序栈和链栈基本操作----c++实现
- 链栈的基本操作实现(c语言)
- 顺序栈和链栈的基本操作实现
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 用C语言实现链栈的基本操作
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 链栈的基本操作实现
- 使用C语言实现链栈以及initialize,push,pop,isEmpty,getlength,destory等操作
- 栈-链栈的基本操作及实现
- 实验4:栈和队列的基本操作实现及其应用——链栈
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 用api实现数据库的操作!
- 使用标准SQL语句实现分页操作(Oracle)
- 如何在asp.net页面上放置的控件上实现左右键菜单,同时对之操作(1)
- 操作Oracle数据库实现上传图片到Blob类型的字段出现的问题
- 操作Oracle数据库实现上传图片到Blob类型的字段出现的问题
- FTP方式实现BS下的WORD操作
- 利用TDC组件实现对WEB页面的交互操作