栈和队列是在程序设计中被广泛使用的两种线性数据结构,它们的特点在于基本操作的特殊性,栈必须按"后进先出"的规则进行操作,而队列必须按"先进先出"的规则进行操作。和线性表相比,它们的插入和删除操作受更多的约束和限定,故又称为限定性的线性表结构。可将线性表和栈及队列的插入和删除操作对比如下:
 
 
  和线性表相比,从"数据结构"的角度看,它们都是线性结构,即数据元素之间的关系相同。但它们是完全不同的数据类型。除了它们各自的基本操作集不同外,主要区别是对插入和删除操作的"限定"。
 
 
        插 入      删 除
  线性表: Insert(L,i,x)  Delete(L,i)
        (1≤i≤n+1)   (1≤i≤n)

  栈:  Insert(L,n+1,x)  Delete(L,n)
 
  队列: Insert(L,n+1,x)  Delete(L,1)
 
  如线性表允许在表内任一位置进行插入和删除;


  而栈只允许在表尾一端进行插入和删除;

  队列只允许在表尾一端进行插入,在表头一端进行删除。