《数据结构》陈越——习题及解析一

 一、基本概念

  • 时间复杂度

二、线性结构 

  • 线性表及其实现

解析:因为顺序存储的方式是数组,故在数组中查找第k个元素,一步就能找到;在链式存储结构中,其存储形式是使用链表,由于每个节点都存储了下一个节点的地址,因此无法一下子知道第k个元素在哪里,需要一步步的查找,寻找第k个元素需要查找k步。 

 

解析:应该改为:

int Length(List *PtrL)
{
    List *p = PtrL;
    int j = 0;
    while(p)
    {
        p = p->Next;
        j++;
    }
    return j;
}
  • 堆栈

解析: 对于堆栈来说,插入和删除操作只在链栈的栈顶进行,故对于1->2->3来说,栈顶在1处,故删除1,然后插入4,得到4->2->3.

解析:

3、栈中依次入栈的是减号“—”、左括号“(”、减号“—”、除号“/”、右括号“)”,这些已经需要堆栈大小为5了,碰到右括号之后,开始进行相应的运算,所有运算符做出栈操作,运算完毕后,继续接下来的运算。

4、出栈是按后进先出的规律,依次按顺序出栈的,

  • 队列 

解析:

1、不是想当然的8-2=6,就是6个元素,而是需要结合循环队列的规律进行相应的判断,front是队列的头,rear是队列的尾,插入在rear处进行,删除在front处进行,可自行画图分析。

2、对于原本队尾的r节点中存储的下一个节点的地址信息r->Next,用s对其进行赋值,因为插入s是在队尾进行,s的插入使得s成为了队列的最后一个节点,因此,需要将s赋值给r。

 

 

  • 树与树的表示

解析:判定树上每个结点需要的查找次数刚好为该结点所在的层数。(将11个元素的二分查找写成判定树的形式),结果一目了然。

解析:对于儿子-兄弟表示法,其每个结点寻存三个数据结点本身此结点的第一个儿子此结点的下一个兄弟),故所需空间为3n。


解析:将二分查找的判定树画出(判定树上每个结点需要的查找次数刚好为该结点所在的层数),然后进行相应的相加比较即可知道

  • 16
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值