2021年数据结构真题

1.己知头指针h指向一个带头结点的非空单循环链表,结点结构data|next,其中next是
指向直接后继结点的指针,p是尾指针,q是临时指针。现要删除该链表的第一个元素,正确
的语句序列是( ) .
A. h->next = h->next->next, q= h->next; free(q);
B. q= h->next; h->next = h->next->next; free(q),
C. q = h->next, h->next = q->next; if(p!=q)p = h; free(q),
D. q= h->next, h->next=q->next; if(p= =q)p=h; free(q);

答案:D
解析:删除该链表的第一个元素就是让你删除头结点后面的第一个结点。
普通情况:
在这里插入图片描述
特殊情况: 要注意当我们删除head后面的节点以后,整个链表就只剩下head节点一个了。 那尾指针只能指向head,所以D选项里的if(p= =q)p=h; free(q);就非常正确。
在这里插入图片描述

4.某森林F对应的二叉树为T,若T的先序遍历序列是a,b, d, c,e, g; f,中序遍历序列是b,d,a,e,g,c,f,则F中树的棵数是()。
A.1
B.2
C.3
D.4
答: C
先根据先序遍历序列和中序遍历序列还原二叉树如下:
在这里插入图片描述
(注:还原的办法很简单,首先看先序序列,第一个元素是a,那a就是树的根节点。 然后在中序序列中凡是a左边的元素都是左子树(所以b,d都是左子树节点),a右边的元素都是右子树(所以c,e,g,f都是右子树节点)。然后再看先序序列的第2个元素是b,所以b就是左子树的根节点)。。。。。所以还原二叉树的过程很简单,首先看先序序列的节点,然后把中序序列分成两半,然后再看先序序列后面的节点,然后再把中序序列继续分。

然后根据二叉树还原成森林,参考下面的博客https://blog.csdn.net/qq_40241957/article/details/124450065

6.给定平衡二叉树如下图所示,放入关键字23后,根中的关键字是( ) 。
在这里插入图片描述
A.16
B.20
C.23
D.25

答:D
参考链接https://blog.csdn.net/qsmx666/article/details/115336086

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java全栈研发大联盟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值