【浙大数据结构学习笔记】习题选讲:逆转链表

要求: 给一个单链表的头结点Head和一个整数K,要求每K个结点逆转一下,并将逆转后的头结点返回给用户

分析: 为了方便操作,头结点Head是空结点,头结点后一个结点才是第一个结点。用三个结点指针new、old、temp辅助实现链表逆转。其中,结点指针new指向已完成逆转的链表的头结点,结点指针old指向未完成链表逆转的老链表的头结点,结点指针temp指向old的下一个结点,用于记录地址。K个结点逆转用K次循环实现,在每次循环中调整结点指针的指向。
在这里插入图片描述

代码:

Ptr ReverseLinkedList(Ptr head,int K){
	Ptr new,old,temp;
	int cnt=1;
	new=head->Next;
	old=new->Next;
	while(cnt++<K){
		temp=old->Next;
		old->Next=new;
		new=old;
		old=temp;
	}
	/*
		head->Next->Next=old;
		head->Next=new;
		return head;
	*/
 	head->Next->Next=old;
	return new;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值