/*栈的顺序存储结构*/
#include <STDLIB.H>
#include <STDIO.H>
#include <MATH.H>
#include <STRING.H>
#define MAXSIZE 1000
#define ElemType int
#define ERROR 0
#define OK 1
//顺序栈的结构定义.
typedef int status;
typedef struct{
int data[MAXSIZE];//
int top;//用于栈顶指针.
}SqStack;//SqStack为结构体类型.
/*初始化栈*/
/********************************************************
* 函数名: int InitStack(SqStack *s)
* 函数功能:建立一个新的空栈s,实际上是将栈顶指针指向-1即可.
* 输入参数:SqStack *s
* 输出参数:int
* 附加说明:
* 作者:YL
* 当前版本: v_1
* 完成日期: 2014-03-13
/********************************************************/
int InitStack(SqStack *s)
{
//s=(SqStack *)malloc(MAXSIZE *sizeof(SqStack));//开辟一段栈的内存空间.
s->top=-1;//定义为空栈.
return 0;
}
/*把栈置空*/
/********************************************************
* 函数名: int Clearstack(SqStack *s)
* 函数功能:清空栈中的元素,此时栈顶指针指向-1.
* 输入参数:SqStack *s
* 输出参数:int
* 附加说明:
* 作者:YL
* 当前版本: v_1
* 完成日期: 2014-03-13
/********************************************************/
int Clearstack(SqStack *s)
{
s->top=-1;
return 0;
}
/*判断栈是否为空*/
/********************************************************
* 函数名: int StackEmpty(SqStack s)
* 函数功能:判断栈是否为空,若栈为空栈则返回TURE,否则返回FALSE.
* 输入参数:SqStack *s
* 输出参数:int
* 附加说明:
* 作者:YL
* 当前版本: v_1
* 完成日期: 2014-03-13
/********************************************************/
int StackEmpty(SqStack s)//s为sqstack型结构体变量.
{
if(s.top==-1)
return 1;//TURE
else
return 0;//FALSE
}
/*求栈的长度*/
/********************************************************
* 函数名: int StackLength(SqStack s)
* 函数功能:返回s的元素的个数,即栈的长度.
* 输入参数:SqStack s
* 输出参数:int
* 附加说明:
* 作者:YL
* 当前版本: v_1
* 完成日期: 2014-03-13
/********************************************************/
int StackLength(SqStack s)
{
return s.top+1;
}
/*返回栈顶元素*/
/********************************************************
* 函数名: int GetTop(SqStack s,ElemType *e)
* 函数功能:若栈不空,则用e返回S的栈顶元素,否则返回ERROR.
* 输入参数:SqStack s,ElemType *e
* 输出参数:int
* 附加说明:
* 作者:YL
* 当前版本: v_1
* 完成日期: 2014-03-13
/********************************************************/
int GetTop(SqStack s,ElemType e)//s是sqstack型结构体变量.
{
if(s.top==-1)
return ERROR;//空栈则返回错误
else
e=s.data[s.top];
return e;
}
/*显示元素*/
/********************************************************
* 函数名: int DispStack(SqStack s)
* 函数功能:从栈底到栈顶依次对每个元素显示.
* 输入参数:SqStack s
* 输出参数:int
* 附加说明:
* 作者:YL
* 当前版本: v_1
* 完成日期: 2014-03-13
/********************************************************/
int DispStack(SqStack s)//s为结构体变量.
{
int i;
i=0;
while(i<s.top)
{
printf("%d",s.data[i++]);
}
printf("\n");
return OK;
}
/*栈的顺序存储的入栈操作*/
/********************************************************
* 函数名: int push(SqStack *s,int e)
* 函数功能:元素入栈操作.
* 输入参数:SqStack *s,int e
* 输出参数:int
* 附加说明:
* 作者:YL
* 当前版本: v_1
* 完成日期: 2014-03-13
/********************************************************/
int push(SqStack *s,int e)
{
if(s->top==MAXSIZE-1)
return ERROR;
s->top++;//将栈顶指针元素加1
s->data[s->top]=e;//给栈顶元素赋值.
return OK;
}
/*栈的顺序存储的出栈操作*/
/********************************************************
* 函数名: int pop(SqStack *s,int *e)
* 函数功能:元素出栈操作.
* 输入参数:SqStack *s,int *e
* 输出参数:int
* 附加说明:
* 作者:YL
* 当前版本: v_1
* 完成日期: 2014-03-15
/********************************************************/
int pop(SqStack *s,int *e)
{
if(s->top==-1)
return ERROR;//若空栈则返回错误.
*e=s->data[s->top];
s->top--;
return *e;
}
栈的c语言实现(顺序存储)。。。2014.5.9
最新推荐文章于 2019-02-25 21:11:35 发布