数据结构---栈

什么是栈?

栈是数据结构的一种类型,顺序栈是一个数组,然后我们将数据存进这个数组中,再从这个数组中出数据,特点就是先入后出

其中栈主要操作是 出栈入栈判断栈空,和判断栈满

一、栈的创建

typedef struct sestack{
    int data[N];
    int top;
}Stack;

首先既然是栈,其特点是先入后出,所以我们需要有一个栈顶指针,然后栈是一片连续的空间,所以我们在定义一个数组去表示这个栈。数组的大小由我们自己来决定。

二、入栈(包含判满)

void Stack_push(Stack *p,int num){
    if(p->top+1==N){
        printf("Stack is full!\n");
        return;
    }
    p->top++;
    p->data[p->top] = num;
    printf("push = %d \n",p->data[p->top]);
}

栈是一片有限的数组空间组成的所以当我们在进行入栈操作时,首先就需要判断栈是否为满,而判断的条件是,当top+1 == N,本身我们的top就是指向的栈顶的,top的初值我们定义的是-1,所以当top+1 == N(最大的空间) 的时候,就是栈已经满了,所以就不能再进入入栈的操作了。

当栈不为满的时候,top++,表示我们的栈顶指针要往前移动一次,这时再将top作为data数组的下标,把num的值赋给data,就完成了入栈操作

三、出栈(包含判空)

int Stack_pop(Stack *p){
    if(p->top==-1){
        printf("Stack is empty!\n");
        return -1;
    }
   return p->data[p->top--];
}	

出栈(pop)的操作其实就是将栈顶指针top对应data的下标的值返回的过程,但是我们也是需要先判断栈是否为空,当然条件也非常简单,因为top本身的初值是-1,所以当top==-1,就是栈已经为空,这时候也就不能继续出栈。

  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值