数据结构 第四季

//栈(stack)是限定仅在表尾进行插入和删除操作的线性表,又称先进后出(Last In First Out)的线性表,简称LIFO结构.//栈的插入操作:叫做进栈,也称压栈、入栈。//栈的删除操作:叫做出栈,也有的叫做弹栈。//栈的抽象数据类型(ADT)/*ADT(Stack)Data :同线性表,元素具有相同的类型,相邻元素具有前驱和后继元素OperationInitStack(*S):初始化操作,建立一个空栈S。DestroyStack(*S):若栈存在,则销毁它。ClearStack(*S):将栈清空。StackEmpty(S):若站为空,返回true,否则返回false。GetTop(S,*e):若栈存在且非空,用e返回S的栈顶元素。Push(*S,e):插入栈顶Pop(*S,e):弹出StackLength(S):返回栈S的元素个数。endADT*/typedef struct{
SElemType data[MAXSIZE];
int top1;//栈1 顶指针
int top2;//栈2 顶指针
}SqDoubleStack;
//栈的顺序存储结构及实现
typedef int SElemType;
type struct{
	SElemType data[MAXSIZE];
	int top;//栈顶
}SqStack;

Status Push(SqStack *S,SElemType e){
	if(S->top == MAXSIZE -1 )
		return ERROR;
	S->top++;
	S->data[S->top]=e;
	return OK;
}

Status Pop(SqStack *S,SElemType *e){
	if(S->top == -1)
		return ERROR;
	*e = S->data[S->top];
	S->top--;
}
Status Push(SqDoubleStack *S,SElemType e,int StackNumber){
if(S->top1+1 == S->top2)
return ERROR;
if(StackNumber == 1)
S->data[++S->top1] = e;
else if( StackNumber == 2)
S->data[--S->top2] = e;
return OK;
}
Status Pop(SqDoubleStack *S,SElemType e,int StackNumber){
if(StackNumber == 1){
if(s->top1==-1)
return ERROR;
*e = S->data[S->top1--]
}
else if(Stack == 2){
if(S->top2 == MAXSIZE)
return ERROR;
*e = S->data[S->top2++]
}
return OK;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值