PTA练习中的易错易混题-----期末复习1

首先,我们来解释第一道题:

假设单链表结构如下:
```
L -> A -> B -> C -> NULL
```
其中L是头指针。如果要在表首插入一个新的结点S,新的结构应该是:
```
S -> L -> A -> B -> C -> NULL
```
所以,我们需要将S的`next`指向当前的头结点L,并且要让头指针L指向S。这样做的原因是头指针始终要指向链表的第一个元素。因此,正确的语句序列为:

A S->next=L; (S的下一个元素是原来的头结点L)
C L=S; (更新头指针L,使其指向S)

相当于要把S替换成L,做L的功能项,而L也要换成S 的功能,L=S,就意味着换了两个节点内容,但是起始题目要求将S插入到头部,原来L的内容仍然是头部应该有的信息,只是将S插入了头部,S所指向的内容应该还是头部该有的内容,也就是一开始L所具备的内容。

现在,我们来看第二道题:

假设单链表结构如下(P不是首元素也不是尾元素):
```
L -> A -> P -> B -> C -> NULL
```
要在P结点后插入新的结点S,新的结构应为:
```
L -> A -> P -> S -> B -> C -> NULL
```
这里,我们需要设置S的`next`指向P的下一个结点(即B),并设置P的`next`指向S。因此,正确的语句序列为:

D S->next=P->next; (S的下一个元素是P原本的下一个元素)
A P->next=S; (P的下一个元素改为S)

>>>>>>

两道题目之间的主要区别在于第一题涉及改变头指针,因为新结点成为链表的第一个元素;而第二题中,我们只是在链表中的某位置插入新结点,不需要更改头指针。

<<<<<<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值