
给出一个头结点让单链表逆序
发布日期:2021-05-07 04:39:38
浏览次数:24
分类:精选文章
本文共 1164 字,大约阅读时间需要 3 分钟。
1.思路:
思路:(如上图)
1.首先把链表分成两部分:头结点Head和头节点下一个结点Current作为一组A,剩下的作为另一组B。把Current指向NULL,断开链表。
2.把B组的结点1,2,3........,依次插入到Head和Current之间。
3.最后把Head指回最后插入的结点就完成了。
思路实现函数:
Node* fun(Node* Head){ Node *Pn; Node *Pre; Node *Current = Head->next; Pn = Current->next; Current->next=NULL; while(Pn!=NULL) { Pre=Pn->next; Pn->next=Current; Current=Pn; Pn=Pre; } Head->next=Current; return Head;}
测试代码:
#includetypedef struct A{ int a; struct A *next;}Node;Node* fun(Node* Head){ Node *Pn; Node *Pre; Node *Current = Head->next; Pn = Current->next; Current->next=NULL; while(Pn!=NULL) { Pre=Pn->next; Pn->next=Current; Current=Pn; Pn=Pre; } Head->next=Current; return Head;}int main(){ /*构造链表,int a分别为0,1,2,3,4*/ Node arr[5]; Node head; Node *Head; Node *pn; Head = &head; pn = Head; int i; for(i=0;i<5;i++) arr[i].a=i; Head->next=&arr[0]; for(i=0;i<4;i++) { arr[i].next=&arr[i+1]; } arr[4].next=NULL; pn=Head->next; /*打印原链表*/ while(pn!=NULL) { printf("%d,",pn->a); pn=pn->next; } printf("\n"); /*-----------------------逆序后--------------------------------*/ Head = fun(Head); pn=Head->next; while(pn!=NULL) { printf("%d,",pn->a); pn=pn->next; } return 0;}
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月07日 21时46分14秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Spring-继承JdbcDaoSupport类后简化配置文件内容
2021-05-09
Java基础IO流(一)
2021-05-09
Hibernate入门(四)---------一级缓存
2021-05-09
MySQL事务(学习笔记)
2021-05-09
一个web前端开发者的日常唠叨
2021-05-09
内存分配-slab分配器
2021-05-09
技术写作技巧分享:我是如何从写作小白成长为多平台优秀作者的?
2021-05-09
Jupyter Notebook 暗色自定义主题
2021-05-09
[Python学习笔记]组织文件
2021-05-09
基于Redo Log和Undo Log的MySQL崩溃恢复流程
2021-05-09
从RocketMQ的Broker源码层面验证一下这两个点
2021-05-09
如何正确的在项目中接入微信JS-SDK
2021-05-09
纵览全局的框框——智慧搜索
2021-05-09
快服务流量之争:如何在快服务中占领一席之地
2021-05-09
【活动】直播揭秘<如何从0开发HarmonyOS硬件>
2021-05-09
Unity平台 | 快速集成华为性能管理服务
2021-05-09
对模拟器虚假设备识别能力提升15%!每日清理大师App集成系统完整性检测
2021-05-09
使用Power BI构建数据仓库与BI方案
2021-05-09
Django认证系统并不鸡肋反而很重要
2021-05-09
快用Django REST framework写写API吧
2021-05-09