java数据结构与算法(二)----栈和队列

1.栈的定义

  栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表

  (1)插入、删除的这一端为栈顶(Top),另一端为栈底(Bottom)

  (2)当表中没有元素时称为空栈

  (3)栈为后进先出(Last In First Out)的线性表,简称LIFO

  

  栈的修改时按后进先出的原则进行,每次删除(退栈)的总是当前栈中最新的元素。即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除。

2.栈的基本运算

  a.InitStack (S)

    构造一个空栈S

  b.StackEmpty (S)

    判断栈是否为空栈

  c.StackFull (S)

    判断栈是否为满栈

  d.Push (S,x)

    进栈,若栈S不满,则将元素x插入S的栈顶。

  e.Pop (S)

    退栈。若栈S非空,则将S的栈顶元素删掉,并返回该元素。

  f.StackTop (S)

    取栈顶元素。若栈S非空,则返回栈顶元素,但不改变栈的状态。

 

队列

1.队列的定义

  队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表

(1)允许删除的一端称为队头(Front)

(2)允许插入的一端称为队尾(Rear)

(3)当队列中没有元素时称为空队列

(4)队列也称为先进先出(First In First Out)的线性表,简称为FIFO表

队列的修改是依先进先出的原则进行的,新来的成员总是加入队尾,每次离开的成员总是在队列头上的(不允许中途离开)。

 

2.队列的基本逻辑运算

a.IninQueue (Q)
置空队。构造一个空队列Q

b.QueueEmpty (Q)

判断队列是否为空

c.QueueFull (Q)

判断队列是否满

d.EnQueue (Q,x)

若队列Q非满,则将元素x插入Q的队尾。即入队

e.DeQueue (Q)

若队列Q非空,则删去Q的队头元素,并返回该元素。即出队

f.QueueFront (Q)

若队列Q非空,则返回队头元素,但不改变队列Q的状态。

 

 

posted @ 2014-03-28 16:45  shenming  阅读(246)  评论(0编辑  收藏  举报