线性结构-----栈(Stack)
栈(Stack):也称作堆栈,仅限制在表尾中进行插入与删除数据的线性表。在栈中我们可通过定义指针,如指向栈顶的(top)指针,指向栈尾的(bottom)指针。如果栈中已有SizeStack个时,称栈已经满了,此时若继续添加元素则将导致数据元素的上益.。
按照其存储方式:顺序栈与链式栈 。
- [ 基本内容]
【0】存储结构
【1】初始化(InitStack).
【2】判断空栈(StackEmpty)
【3】取栈顶元素(Gettop).
【4】元素的入栈(pushStack).
【5】将栈顶元素出栈(PopStack).
【6】求栈长(StackLength)。
【7】清除栈(ClearStack).
【0】存储结构
#define StackSize 100
typedef struct {
DataType stack[StackSize]; //DataType为数据类型
int top; //top为栈顶指针
} seqStack;
【1】初始化(InitStack).
void InitStack(SeqStack *s){
s->top=-1; //将栈顶指针置为-1
}
【2】判断空栈(StackEmpty)。
int StackEmpty (SeqStack s){
if(s.top==0)
return 1;
else
return 0;
}
【3】取栈顶元素(Gettop).
int Getop(SeqStack s, DataType *e){
if(S.top<=0){
printf("栈已经空了\n");
return 0;
}
else{
*e=s.stack[S.top-1] //取栈顶指针
return 1;
}
}
【4】元素的入栈(pushStack).
int PushStack(SeqStack *s, DataType e){
if(s->top>=StackSize){
printf("栈已经满了\n");
return 0;
}
else {
s->stack[s->top]=e; //将元素e的值赋值入栈
s->top++; //栈顶指针加一
return 1;
}
}
【5】将栈顶元素出栈(PopStack).
int PopStack (SeqStack *s, DataType *e){
if(s->top==0)
{
printf("栈已经满了\n");
return 0;
}
else{
s->top--;
*e=s->stack[s->top];
return 1;
}
}
【6】求栈长(StackLength)。
int StackLength(SeqStack *s){
return s->top;
}
【7】清除栈(ClearStack).