数据结构 第四季

来源:互联网 发布:java string compare 编辑:程序博客网 时间:2024/06/10 04:21
//栈(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