数据结构之栈的链表实现

来源:互联网 发布:威廉叶芝知乎 编辑:程序博客网 时间:2024/05/01 07:29


/*实现功能:用链式表实现栈的各种操作编译环境:Windows 64b,vc6.0日期:    2015/7/20作者:    wtt561111*/#define stack_max_num 10#include "stdio.h"#include "stdlib.h"typedef struct Node *PNode;struct Node{int info;PNode link;};struct LinkStack{PNode top;};typedef struct LinkStack *PLinkStack;/*创建一个空的堆栈,存储方式为链式表*/PLinkStack createEmptyStack_link(int m){PLinkStack pastack=(PLinkStack)malloc(sizeof (struct LinkStack));//不需要头结点,pastack->top->info即为栈顶元素的指if(pastack==NULL){printf("out of spcae!\n");return NULL;}pastack->top=NULL;return pastack;}/*****************************************************//*判断堆栈是否为空*/int isEmptyStack_link(PLinkStack pastack){if(pastack->top==NULL )return 1;return 0;}/*****************************************************//*将x压入栈中,成功返回1,否则返回0;*/int push_link(PLinkStack pastack,int x){PNode pn1=(PNode)malloc(sizeof(struct Node));if(pn1==NULL){printf("out of space!\n");return 0;}pn1->info=x;pn1->link=pastack->top;pastack->top=pn1;return 1;}/*****************************************************//*将栈顶元素出栈,成功返回1,否则返回0;*/int pop_link(PLinkStack pastack){if(pastack->top==NULL){printf("empty stack!\n");return 0;}pastack->top=pastack->top->link;return 1;}/*****************************************************//*获取栈顶元素,成功返回栈顶元素,否则返回-1;*/int top_link(PLinkStack pastack){if(pastack->top==NULL){printf("empty stack!\n");return -1;}return pastack->top->info;}/*****************************************************//********************主函数***************************/int main(){PLinkStack stack_get=createEmptyStack_link(stack_max_num);push_link(stack_get,0);push_link(stack_get,1);push_link(stack_get,2);push_link(stack_get,3);int x0=stack_get->top->info;int x1=stack_get->top->link->info;int x2=stack_get->top->link->link->info;int x3=stack_get->top->link->link->link->info;//printf("%d\t%d\t%d\t%d\n",x0,x1,x2,x3);pop_link(stack_get);int from_top=top_link(stack_get);printf("%d\n",from_top);return 0;}


1 0
原创粉丝点击