以后我会在CSDN做数据结构的笔记整理,并且分享给大家。
前一个星期老师讲解了栈的原理及实现。
首先,栈就是一个FILO(先进的后出)的结构,第一个被推入栈内的数据会最后一个出去。我们可以使用链表来构建栈。
struct stack{
int data[maxsize];
int top;
}stack;
这里我们以存储int类型的数据为例,top指代栈顶在数组中的序号。
初始化栈
void Init(struct stack *s){
s->top=-1;
}
我们让top=-1,完成栈的初始化。
接下来我们判断栈是否为空或满。
bool isEmpty(struct stack *s){
if(s->top==-1){//检测top的值,初始化的时候为一
return 1;//如果栈为空,则返回1
}
return 0;//如果栈不空,则返回0
}
bool isFull(struct stack *s){
if(s->top=Maxsize-1){
return 1;//栈满
}
return 0;//不满
}
接下来我们就可以进行数据的入栈push和出栈pop操作。
void push(struct stack *s,int a){
if(isFull){//如果为空则报0
printf("栈满无法入栈");
exit(0);
}
else{
s->top++;
s->data[s->top]=a;//top向上走一位,并赋值
}
}
void pop(struct stack *s){
if(isEmpty){