链栈的实现LinkStack
来源:互联网 发布:传感器网络的支撑技术 编辑:程序博客网 时间:2024/06/07 15:12
#i
#include<stdio.h>
#include<stdlib.h>#include<malloc.h>typedef int DataType ;//栈节点类型typedef struct Node{DataType data;struct Node *next;} Node,*pNode;//栈类型typedef struct LinkStack{pNode top;int stacksize;} LinkStack,*pLinkStack;pLinkStack InitLinkStack();void ClearLinkStack(pLinkStack s);void DestroyLinkStack(pLinkStack s);void Push(pLinkStack s,DataType x);void Pop(pLinkStack s,DataType *x);int GetLinkStackSize(pLinkStack s);DataType GetTop(pLinkStack s );int IsLinkStackEmpty(pLinkStack s);void LinkStackTraverse(pLinkStack s, void (*Visit)(DataType data) );void print(DataType data);pLinkStack InitLinkStack(){pLinkStack s=(pLinkStack) malloc(sizeof( LinkStack)) ;if(!s) {s->stacksize=0;s->top=NULL; }return s;}void ClearLinkStack(pLinkStack s){DataType data;while( s->stacksize ){Pop(s,&data);}}void DestroyLinkStack(pLinkStack s){if( s->stacksize)ClearLinkStack(s);free(s);}void Push(pLinkStack s,DataType x){pNode p=(pNode ) malloc( sizeof(Node)) ;if( !p )exit(-1);p->data=x;p->next=NULL;p->next=s->top ;s->top=p;s->stacksize++;}void Pop(pLinkStack s,DataType *x){if(s->stacksize==0){printf("the linkstack is null.can't pop anything\n");*x='\0'; }else {pNode p=s->top;*x=p->data;s->top=s->top->next;s->stacksize--;free(p);}}int GetLinkStackSize(pLinkStack s){return s->stacksize;}DataType GetTop(pLinkStack s ){if(s->stacksize==0){printf("the linkstack is null");return 0;}else{return s->top->data;}}int IsLinkStackEmpty(pLinkStack s){if(s->stacksize==0)return 1;elsereturn 0;}void LinkStackTraverse(pLinkStack s, void (*Visit)(DataType data) ){pNode p=s->top;while(p){Visit(p->data) ;p=p->next;}}void print(DataType data){printf("%d ",data);}int main(){pLinkStack s=InitLinkStack();int i;printf("gettop :\n");for( i=0 ;i<100;i++){Push(s,i);DataType datatop= GetTop(s);printf("%d ",datatop);}printf("\nIsLinkStackEmpty %d",IsLinkStackEmpty(s) );printf("\n traverse the LinkStack:\n");LinkStackTraverse(s ,print);printf("\n the current LinkStack' size :%d\n",GetLinkStackSize(s) );DataType data;Pop(s,&data);printf("Pop %d \n",data);printf("\n the current LinkStack' size :%d\n",GetLinkStackSize(s) );Pop(s,&data); printf("Pop %d \n",data);printf("LinkStack clear!\n");ClearLinkStack(s);printf("LinkStack destroy!\n");DestroyLinkStack(s);}
0 0
- 链栈的实现LinkStack
- 栈的链性表的c语言实现方式 linkstack.h 和 linkstack.c
- LinkStack实现
- 数据结构四:栈的两种形式LinkStack和SeqStack用线性表的实现方式,以及SeqQueue和LinkQueue的实现
- 链式栈的基本操作——LinkStack(C语言版)
- 链式栈的基本操作——LinkStack(C语言版)
- 链式栈的基本操作——LinkStack(C语言版)
- 链栈(LinkStack)
- 数据结构封装之《LinkStack链栈》
- 数据结构封装之《LinkStack链栈》
- 链栈的实现
- 链栈的实现
- 链栈的实现
- 链栈的实现
- 链栈的实现
- 链栈的实现
- 链栈的实现
- 链栈的实现
- poj1142
- Python提取TOP排名,用插入排序法和二分法排序比较
- ubuntu麒麟13.10 安装flash,在线观看影音
- iOS 全局修改UINavigation 后退按钮
- hiberate 体系结构
- 链栈的实现LinkStack
- ubuntu的recovery重置密码
- 二分查找
- python在数据挖掘领域常用工具包
- 黑掉ATM取款机?只需一条短信
- 百度地图基础应用教程
- 微软100题-天天做-第12题
- java--集合框架工具类
- 深入理解Java Class文件格式(九)