设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。
5条回答 默认 最新
- 技术专家团-小桥流水 2022-09-22 12:40关注
需要根据你的链表是否有头节点(哨兵节点)来处理。
有头节点的链表逆序#include <stdio.h> #include <stdlib.h> typedef int datatype; typedef struct link_node { datatype info; struct link_node* next; }node,*linklist; linklist createList() { datatype x; linklist L; char ch; L = (linklist)malloc(sizeof(node)); if (L == NULL) { printf("error"); return 0; } linklist n,p; p = L; printf("请输入整数系列:\n"); //输入系列并以回车结束 while(1) { scanf_s("%d",&x,1); n = (linklist)malloc(sizeof(node)); n->info = x; n->next = NULL; p->next = n; p = n; if( (ch=getchar()) == '\n') break; } return L; } void print(linklist head) { linklist p; p = head->next; while(p) { printf("%d ",p->info); p = p->next; } printf("\n"); } //翻转 linklist reverse(linklist head) { linklist p,t,k; p = head->next; t = p->next; p->next = NULL; while(t) { k = t->next; head->next = t; t->next = p; p = t; t = k; } return head; } //释放内存 void release(linklist head) { linklist p; while(head) { p = head->next; free(head); head = p; } } int main() { linklist head = createList(); print(head); head = reverse(head); printf("逆序后:"); print(head); release(head); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 WPF 大屏看板表格背景图片设置
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示