【自考】数据结构导论-第3章栈、队列代码

目录

栈初始化

判栈空

进栈

出栈

取栈顶元素

链栈初始化

链栈判空

链栈进栈

链栈出栈【1910真题】

链栈取栈顶元素  P65

链表逆置

循环队列

队列初始化

判队列空

入队列

出队列

取队列首元素

链队的初始化

链队判断空

链队入队列

链队出队列

链队取首元素


循环队列的相关条件和公式:

1.队空条件:rear==front

2.队满条件:(rear+1) %QueueSIze==front,其中QueueSize为循环队列的最大长度

3.计算队列长度:(rear-front+QueueSize)%QueueSize

4.入队:(rear+1)%QueueSize

5.出队:(front+1)%QueueSize

 

对称矩阵中,M[k]和a(i,j)的对应关系是:

当i>=j时,k=i(i+1)/2+j

当i<j时,  k=j(j+1)/2+i

上三角矩形中,M[k]和a(i,j)的对应关系是:

当i<=j时,k=i(2n-i+1)/2+j-i

当i>j时,  k=n(n+1)/2

下三角矩形中,M[k]和a(i,j)的对应关系是:

当i>=j时,k=i(i+1)/2+j

当i<j时,  k=n(n+1)/2

 

针对下三角矩阵,元素a(i,j)在数组M中的下标k=1+2+...+i+j=i(i+1)/2+j

针对上三角矩阵,元素a(i,j)在数组M中的下标k=1+2+……j-i+i=j(j-1)/2+i

 

队列的插入操作(入队)在队尾进行,删除操作(出队)在队首进行。因为单循环链表是自前向后的,尾结点的下一个结点是头结点。故只设头指针时,入队操作的时间为O(n),出队操作的时间为O(1);只设尾指针时,入队操作的时间为O(1),出队操作的时间也为O(1)。

【卡特兰数的应用】

1、出栈次序:一个栈(无穷大)的进栈次序为1、2、3……n。不同的出栈次序有几种。

2、二叉树构成问题。有n个结点,问总共能构成几种不同的二叉树。

若一个栈的输入序列是1,2,3,…n,输出序列的第一元素是n,则第i个输出元素是( D
A.不确定    B.n-i       C.n-i-1        D. n-i+1
 
已知循环队列的存储空间为数组A[21],front指向队头元素的前一个位置,rear指向队尾元素,假设当前front和rear的值分别为8和3,则该队列的长度为(  C  )
A. 5     B.6      C.16      D.17
解析:队列的长度为(rear-front+maxsize)%maxsize=(rear-front+21)%21=16,这种情况和front指向当前元素,rear指向队尾元素的下一个元素的计算是相同的。
 
假设一个8阶的上三角矩阵A按照列优先顺序压缩存储在一维数组B中,则B数组的大小应为 36
解析:针对上三角矩阵,阶数决定压缩存储后的一维数组的大小。n阶的上三角矩阵转化为一维数组后,其大小为:n+n-1+n-2+…+1 = n(n+1)/2,故n阶的上三角矩阵转化为一维数组后,其大小为36。
 
设以数组Q[m]存放循
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值