问题
问答题
阅读以下关于C语言及C代码的叙述。
[说明]
在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下三部分程序,其中:
[C代码1]
是李工为了在嵌入式平台上开发一段可变参数函数,在X86平台上实现的一个参数个数可变函数实例。[C代码2]
是王工在编写软件时,自己编写的内存拷贝函数。[C代码3]
是赵工编写的一段数据处理的程序,其中fun0的含义为从已创建的一个单向链表中查找倒数第index个结点。他的设计思路为:首先创建两个指针ptr1,ptr2,并且都指向链表头,然后ptr1向前走index步,这样ptr1和ptr2之间就间隔index个结点,然后ptr1和ptr2同时向前步进,当ptr1到达最后一个结点时,ptr2就是倒数第index个结点了。ReverseList()为赵工编写的对已有单向链表进行逆序重排的函数。仔细阅读并分析C代码3,填补其中的空(1)~(5)。
答案
参考答案:
(1)ptr1=ptr1->next
(2)ptr2=ptr2->next
(3)ptr2
(4)temp2->next=temp1
(5)temp3
解析:
[分析]: 在单向链表中,对某元素的后继元素的访问只能通过结点中的next指针项来获取。按照题目要求,首先创建两个指针ptr1,ptr2,并且都指向链表头,然后ptr1向前走index步,这样ptr1和ptr2之间就间隔index个结点,然后ptr1和ptr2同时向前步进,当ptr1到达最后一个结点时,ptr2就是倒数第index个结点了。因此,对于第index个结点的查找,只需要移动ptr1和ptr2,最后ptr2返回的为倒数第index个结点。
在逆序排列中,将temp3移动到链表尾部,使用temp2作为临时变量进行链表翻转。