(8分)已知一个单链表的头节点指针为 head。设计算法将链表中最后k 个节点移动到链表头节点之后,且这k个节点按与原来相反的顺序存放,从而形成一个新链表(例
如,设原链表节点顺序为a₁,a₂,…,an, 则新链表顺序为 an,an-1,.,an-k+1,a1,
a₂,.,an-k), 该链表的头指针仍为head。要求新链表中节点复用原来链表的节点。
(1)根据注释,将以下代码补充完整,完成算法实现。(6分)
typedef struct LNode{ int data; struct LNode *next;
}LNode,*LinkList;
void impl(LinkList head,int k){
int count=0;
LinkList p,toReverseHead ;
p =head->next;
toReverseHead=head;
a)___________ (3分 )
}
p=toReverseHead->next;
toReverseHead->next=NULL;// 设置最后一个节点next 为空
toReverseHead=p;//toReverseHead 指向最后k个节点中的第一个节点
while(toReverseHead){// 逐一移动 最后k个节点
b)___________ (3 分)
}
}
(2)分析算法的时间复杂度和空间复杂度。(2分)
查看答案和解析【26考研辅导课程推荐】:26考研集训课程,VIP领学计划,26考研VIP全科定制套餐(公共课VIP+专业课1对1) , 这些课程中都会配有内部讲义以及辅导书和资料,同时会有教研教辅双师模式对大家进行教学以及督学,并配有24小时答疑和模拟测试等,可直接咨询在线客服老师领取大额优惠券。
启航教育热门私房课
MORE小班面授 名额有限 抢先体验
编辑推荐
最新内容
姓名
手机号