当前位置: 首页 > news >正文

数据结构每日一题day14(链表)★★★★★

题目描述:试编写算法将带头结点的单链表就地逆置,所谓“就地”就是空间复杂度为O(1)。

算法思想:

1.初始化:

定义三个指针 prev、curr、next,分别表示前驱节点、当前节点和后继节点。

prev 初始化为 NULL,curr 初始化为头结点的下一个节点(即第一个有效节点)。

2.遍历链表并反转:

遍历链表,每次将 curr->next 指向 prev,实现局部反转。

然后 prev、curr、next 依次后移,继续处理下一个节点。

3.修正头结点指针:

遍历结束后,prev 指向原链表的最后一个节点,即新链表的第一个节点。

将头结点的 next 指向 prev,完成整个链表的逆置。

复杂度分析:

时间复杂度:O(n)

空间复杂度:O(1)

代码实现:

#include <stdio.h>
#include <stdlib.h>typedef struct Node {int data;struct Node *next;
} Node, *LinkedList;// 创建链表(尾插法)
LinkedList createList() {LinkedList L = (Node*)malloc(sizeof(Node)), tail = L;int x;while (scanf("%d", &x), x != -1) {tail->next = (Node*)malloc(sizeof(Node));tail = tail->next;tail->data = x;}tail->next = NULL;return L;
}// 就地逆置链表
void reverseList(LinkedList L) {if (L == NULL || L->next == NULL) {return; // 空链表或仅头结点,无需逆置}Node *prev = NULL;Node *curr = L->next; // 第一个有效节点Node *next = NULL;while (curr != NULL) {next = curr->next; // 保存下一个节点curr->next = prev; // 反转当前节点的指针prev = curr;       // prev 后移curr = next;       // curr 后移}L->next = prev; // 头结点指向新的第一个节点
}// 打印链表
void printList(LinkedList L) {for (Node *p = L->next; p; p = p->next) {printf("%d ", p->data);}puts("");
}int main() {LinkedList L = createList();printf("原链表: ");printList(L);reverseList(L);printf("逆置后: ");printList(L);return 0;
}

相关文章:

  • nDCG(归一化折损累计增益) 是衡量排序质量的指标,常用于搜索引擎或推荐系统
  • FUSE 3.0.0 | 聚合7大直播平台的免费电视直播软件,支持原画清晰度及弹幕、收藏功能
  • 玩转Nginx
  • 电脑重复图片太多?推荐一款开源的图片去重工具ImageContrastTools
  • 鸿蒙 应用开发 项目资源结构及资源访问
  • 数据库12(游标)
  • 2025年-redis(p1-p10)
  • D365 开发环境证书到期替换处理
  • ant-design 表格多选无法显示,选一个选项全部被选中
  • 牛客:AB4 逆波兰表达式求值
  • 启动Hadoop集群及集群效果
  • ai改写智能助手在线润色,高效产出优质文章!
  • Java 数据类型之间的转换入门
  • OpenCV的grabCut算法分割图像
  • Windows结合WSL之ext4.vhdx不断增大问题
  • Unity URP RenderTexture优化(二):深度图优化
  • PCI总线数据采集卡 32路多功能异步模拟量信号采集卡
  • 【C/C++】线程池_学习笔记
  • 6轴、智能、低功耗惯性测量单元BMI270及其OIS接口
  • CrowdStrike推出新型工具防御恶意AI模型与数据窃取
  • 韩国代总统、国务总理韩德洙宣布辞职
  • 专家分析丨乌美签署矿产协议,展现美外交困境下的无奈
  • 今年4月上海一二手房成交面积同比增21%,二手房成交2.07万套
  • 水利部将联合最高检开展黄河流域水生态保护专项行动
  • 铁路上海站今日预计发送旅客65.8万人次,同比增长超16%
  • 证据公布!菲律宾6人非法登上铁线礁活动