数据结构复习一点是一点

顺序栈基本操作

1.初始化 
置空栈:初始化栈顶指针。

/*初始化*/
SeqStack *initStack(){
    SeqStack *s;
    s = (SeqStack *)malloc(sizeof(SeqStack));  //动态申请内存
    s->top = -1;   //空栈时,栈顶指针top=-1

    return s;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.进栈:首先判断栈是否满了,如果栈满,返回false。否则进栈。

/*进栈*/
void push( SeqStack *s, datatype x ){
    if( s->top >= MAXSIZE-1 ){  //判断栈满 
        printf("栈满!"); 
    }else{
        s->top++;   
        s->data[s->top] = x;        
    }
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3.取栈顶元素

/*取栈顶元素*/
int topStack( SeqStack *s ){
    datatype x;

    if( isEmpty(s) ){  //判断栈是否为空
        printf("栈空");
    }else{
        return x = s->data[s->top]; 
    }   
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

4.判断栈是否为空

/*判断栈是否为空*/ 
int isEmpty( SeqStack *s ){
    if( s->top == -1 ){
        return true;  //栈空 
    }else{
        return false;
    }   
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5.出栈

/*出*/
void pop( SeqStack *s, datatype *x ){   
    if( isEmpty(s) ){  //判断栈空 
        printf("栈空");
    }else{
        *x = s->data[s->top];  //将栈顶元素存入*xs->top--;   
    } 
}

猜你喜欢

转载自blog.csdn.net/qq_38234071/article/details/80862400