您的位置:首页 > 理论基础 > 数据结构算法

数据结构之栈的顺序表实现

2015-08-23 14:28 691 查看


/*
实现功能:用顺序表实现栈的各种操作
编译环境:Windows 64b,vc6.0
日期: 2015/7/20
作者:wtt561111
*/

#define stack_max_num 10
#include "stdio.h"
#include "stdlib.h"
struct SeqStack{
int MAXNUM;
int t;//始终指向栈顶
int *s;
};
typedef struct SeqStack *PSeqStack;

/*
创建一个空的堆栈,存储方式为顺序表
*/
PSeqStack createEmptyStack_seq(int m){

PSeqStack pastack=(PSeqStack)malloc(sizeof (struct SeqStack));
if(pastack==NULL){
printf("out of spcae!\n");
return NULL;
}
pastack->s=(int * )malloc (sizeof (int)*m);
if(pastack==NULL){
printf("out of space!\n");
return NULL;
}
pastack->MAXNUM=m;
pastack->t=-1;
return pastack;
}
/*****************************************************/

/*
判断堆栈是否为空
*/
int isEmptyStack_seq(PSeqStack pastack){

if(pastack->t==(-1) )
return 1;
return 0;

}
/*****************************************************/

/*
将x压入栈中,成功返回1,否则返回0;
*/
int push_seq(PSeqStack pastack,int x){

if(pastack->t >= pastack->MAXNUM){
printf("overflow!\n");
return 0;
}
pastack->t=pastack->t+1;
pastack->s[pastack->t]=x;
return 1;

}
/*****************************************************/

/*
将栈顶元素出栈,成功返回1,否则返回0;
*/
int pop_seq(PSeqStack pastack){

if(pastack->t==(-1)){
printf("empty stack!\n");
return 0;
}
pastack->t=(pastack->t)-1;
return 1;

}
/*****************************************************/

/*
获取栈顶元素,成功返回栈顶元素,否则返回-1;
*/
int top_seq(PSeqStack pastack){

if(pastack->t==(-1)){
printf("empty stack!\n");
return -1;
}

return pastack->s[pastack->t];

}
/*****************************************************/

/********************主函数***************************/
int main(){
PSeqStack stack_get=createEmptyStack_seq(stack_max_num);
push_seq(stack_get,0);
push_seq(stack_get,1);
push_seq(stack_get,2);
push_seq(stack_get,3);
pop_seq(stack_get);
int from_top=top_seq(stack_get);
printf("%d\n",from_top);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息