数据结构之栈的链表实现
2015-08-23 14:36
661 查看
/*
实现功能:用链式表实现栈的各种操作
编译环境: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;
}
相关文章推荐
- android 代码实现控件之间的间距
- [C/C++]反转链表
- [Android]在代码里运行另一个程序的方法
- 肯特·贝克:改变人生的代码整理魔法
- Linux C函数参考手册(PDF版)
- 网页恶意代码的预防
- 高手写的Tracer-Flash代码调试类代码下载
- C#实现基于链表的内存记事本实例
- CSS代码缩写技巧
- 非主流Q-zOne代码代码搜集第1/2页
- CreateWeb.vbs 代码
- Lua教程(十七):C API简介
- Lua中编译执行代码相关的函数详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- C#实现打造气泡屏幕保护效果
- 更有效率的css代码编写第1/3页
- 代码中到底应不应当写注释?