栈与队列(栈)

1.定义

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

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

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

    栈:

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

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

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

栈与队列(栈)_第1张图片

队列:

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

           队的插入工作称为入队。

            队的删除工作称为出队。

栈与队列(栈)_第2张图片

栈与队列(栈)_第3张图片

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;
}

 

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

 

 

 

 

 

你可能感兴趣的:(栈与队列(栈))