10.31总结

  1. 在作进栈运算时,应先判别栈是否满,在作退栈运算时应先判别栈是否空。当栈中元素为 n 个,作进栈运算时发生上溢,则说明该栈的大容量为n。 为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的深度分别设在这片内存空间的两端,这样,当 两个栈的栈顶在栈空间的某一位置相遇时,才产生上溢。
  2. 若已知一个栈的入栈序列是 1,2,3,…,n,其输出序列为 p1,p2,p3,…,pN,若 pN是 n,则 pi是不确定的。
  3. 若一个栈以向量 V[1..n]存储,初始栈顶指针 top 为 n+1,则下面 x 进栈的正确操作是 top:=top-1; V [top]:=x 。
  4. 若栈采用顺序存储方式存储,现两栈共享空间 V[1..m],top[i]代表第 i 个栈( i =1,2)栈顶,栈 1 的 底在 v[1],栈 2 的底在 V[m],则栈满的条件是 top[1]+1=top[2] 。
  5. 栈在递归调用 子程序调用 表达式求值中应用。
  6. 用链接方式存储的队列,在进行删除运算时头、尾指针可能都要修改。
    注:本题主要考查队列的删除操作。在有头结点的链队列的出队操作中,一般只需修改队头指针,但当原队列中只有一个结点时,该结点既是队头也是队尾,故删去此结点时亦需修改队尾指针,使其指向头结点,且删去此结点后队列变空。
  7. 递归过程或函数调用时,处理参数及返回地址,要用一种称为栈的数据结构。
  8. 已知输入序列为 abcd 经过输出受限的双向队列后能得到的输出序列有( )。
    A. dacb B. cadb C. dbca D. bdac E. 以上答案都不对
    注意是出队受限的队列(单方向出队),入队可以两端入队,并且只限制进队的顺序,不限制是否全部进入才出队,
    B:答案 cadb 过程: a进队列——b从入队口进队——c从出队口出队——a出队——d从出队口入队——d出队——b出队;
    D: 答案bdac 过程: a进队列——b从出队口进队——b出队——c从入队口入队——d从出队口入队——d出队——a出队——c出队;
    输出受限意为可以在两端输入只能在一端输出。假设右端为输出端:
    A 要满足输出da,则先输入abc再从右端输入d,排列为cbad,右端输出为dabc,所以A错;
    B 先输入abc使之排列为bac,再从右端输出ca,从右端输入d,再依次输出d和b,所以序列为cadb;
    后面类推。
    9.栈和队列都是限制存取点的线性结构。
  9. 设有一个 10 阶的对称矩阵 A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为 1, 每个元素占一个地址空间,则 a85的地址为33.
    注:对称压缩存储中元素位置:i*(i-1)/2+j-1+初始位置。