数据结构_单链表题-2.1

一. 反转单链表

将一个单链表反过来。

个人思路(一团浆糊大错特错)

反转嘛,变最后为起点,依次反转过来就行了。
1)找到最后三个链表结点,分别保存下来,以最后一个为首地址。
2)最后一个链表结点指向倒数第二个链表(倒数第三个的next赋值给最后一个的next)
3)这样每隔一个链表结点依次反转。
在这里插入图片描述

问题

1)你要先遍历一遍才能找到最后一个链表
2)单链表,你怎么可能回溯找上流的链表

参考思路:三指针迭代(头部插入一个新的空链表)

1)首链表(n2)前创建一个NULL链表(n1)
2)把首链表指向的第二个链表地址保存下来(n3)
3)首链表指向n1,完成反转(n2->next=n1)
4)依次右移,像三个为一组的窗口去调整反转。
在这里插入图片描述

增益点:指针迭代

单链表是自上而下的单方向,思考方向应该还为从上而下。

代码

SListNode* reverseList(SListNode* head) {
   
	if (head == NULL || head->next == NULL)
		return head;
	SListNode* n1 = NULL;
	SListNode* n2 = head;
	SListNode* n3 = head->next;
	while (n2 != NULL)
	{
   
		n2->next = n1;
		
		n1 = n2;
		n2 = n3;
		if(n3!=NULL)
		n3 = n3->next;

	};

	return n1;
}

二. 单链表,有数量关系的处理

例如:
取单链表中间点
删链表倒数第几个数
…………

个人思路

1)遍历求长度
2)要第几个根据长度来看

问题

1)你要先遍历一遍才能找到最后一个链表,求长度
2)那这和数组有什么区别?效率不高
3)链表的长度本该没有什么意义。

参考思路:快慢指针

1)根据数量关系,中间点就是快指针到末尾时,慢指针以一半的速度到达中间位置。
倒数第n个,当快指针到末尾时,慢指针以落后n的速度到达相应的位置。
在这里插入图片描述

增益点:快慢指针,边遍历边根据数量关系定位

在快指针遍历完整个数组时,把之后的第二遍遍历用慢指针代替。适合有数量关系的题。

代码

一半的速度找到中间点。

while(cur->next)
    {
   
        cur=cur->next;
        if(cur->next)
        cur=cur->next;

        low=low->next;
    }

相关推荐

  1. 数据结构:

    2024-02-04 12:26:01       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-04 12:26:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-04 12:26:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-04 12:26:01       87 阅读
  4. Python语言-面向对象

    2024-02-04 12:26:01       96 阅读

热门阅读

  1. Elasticsearch重建索引-修改索引字段类型

    2024-02-04 12:26:01       64 阅读
  2. windows安装git与git配置

    2024-02-04 12:26:01       57 阅读
  3. protobuf 序列化协议之数据结构

    2024-02-04 12:26:01       47 阅读
  4. SpringBoot打包

    2024-02-04 12:26:01       40 阅读
  5. 旋复代赭石汤原方

    2024-02-04 12:26:01       58 阅读
  6. 计算机科学导论(2)计算机如何存储音频

    2024-02-04 12:26:01       130 阅读
  7. gogs 搭建私人git服务器遇到的问题汇总

    2024-02-04 12:26:01       53 阅读
  8. MongoDB实战 – 创建和删除数据库

    2024-02-04 12:26:01       54 阅读
  9. 【Soc级系统防御】基于IP的SoC设计中的安全问题

    2024-02-04 12:26:01       58 阅读
  10. Solana 代币合约入口程序学习

    2024-02-04 12:26:01       66 阅读
  11. 用python获取你想要的股票信息,生成走势图

    2024-02-04 12:26:01       56 阅读
  12. vue+video-animation-player播放vap视频

    2024-02-04 12:26:01       57 阅读
  13. Python笔记(四)

    2024-02-04 12:26:01       49 阅读
  14. 倒计时67天

    2024-02-04 12:26:01       51 阅读