栈与队列(栈)

1.定义

相同点:栈和队列都是线性表。

不同点:栈是限定仅在表尾进行插入和删除操作的线性表。(先进后出)

             队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。(后进后出)

    栈:

            我们把允许插入和输出的那一称之为栈顶(top),另一端称为栈底(bottom)。不含任何元素的栈称为空栈。

           栈的插入工作称为进栈,也称压栈、入栈。

           栈的删除工作称为出栈,也称为弹栈。

队列:

           我们把允许插入的一端称为队尾,允许删除的一端称为队头。

           队的插入工作称为入队。

            队的删除工作称为出队。

2.栈

栈的顺序结构及其实现

       我们定义一个top变量来表示栈顶元素在数组中的位置,若存储栈的长度为StackSize,则栈顶位置top必须小于StackSize,当栈中存在一个元素,top=0,因此把空战的限定条件定为top=-1;

实现进栈出栈

int push(int *stack,int max,int *top,int x)  
  
{  
    if(*top>=max)  
        return 1;//栈满  
    stack[*top]=x;//第一步操作,保证元素在0位置处  
    (*top)++;  
      return 0;  
}  
int pop(int *stack,int *top,int *t)  
{  
    if(*top==0)  //空栈
        return 1;  
    (*top)--;  
    *t=stack[*top];
        return 0;  
}  

 栈的链式结构及其实现

void Push(int *&s,int e)//进栈
{
 LiStack *p=new LiStack;
 p->data=e;
 p->next=s->next;
 s->next=p;
}
int Pop(int *&s,int &e)//出栈
{
 LiStack *p;
 if(s->next==NULL)
  return 0;
 p=s->next;
 e=p->data;
 s->next=p->next;
 delete p;
 return 1;
}

 

关于队列请看下个博客。♥(ˆ◡ˆԅ)            

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值