栈的c语言实现(顺序存储)。。。2014.5.9

/*栈的顺序存储结构*/

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值