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

206. 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
 

示例 1:


输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:


输入:head = [1,2]
输出:[2,1]
示例 3:

输入:head = []
输出:[]
 

提示:

链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000
 

进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-linked-list
著作权

归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

#include<iostream>
using namespace std;
class ListNode
{
public:ListNode* next;int data;ListNode(){next = NULL;}
};
class LinkList
{
public:int len;ListNode* head;LinkList(){head = new ListNode();head->next = NULL;len = 0;}void insert(int index, int num){if (index > len || index < 0){return;}//找到前一位的index前一位else{ListNode* p = head;for (int i = 0; i < index; i++){p = p->next;}ListNode* node = new ListNode();node->data = num;node->next = p->next;p->next = node;len++;}}void del(int index){if (index >= len || index < 0){return;}else{ListNode* node = new ListNode;ListNode* p = head;for (int i = 0; i < index; i++){p = p->next;}//要删除的前一个位置ListNode* q = p->next;p->next = p->next->next;delete q;len--;}}LinkList* reverseList(){//方法1//把每次ListNode* p = head;LinkList* newone = new LinkList();ListNode* q = ( * newone).head;for (int i = 0; i < len; i++){p = p->next;newone->insert(0, p->data);//每次都插入到首位置中去}return newone;}//方法2ListNode* reverselist(ListNode* head){if (head == NULL || head->next == NULL)return head;ListNode* tail = head->next;//先记录反转后的尾结点ListNode* new_head = reverselist(head->next);head->next = tail->next;tail->next = head;return new_head;}void display(){ListNode* p = head->next;for (int i = 0; i < len; i++){if (i) {cout << p->data;}else{cout << "," << p->data;}p = p->next;}}
};
int main()
{int n;LinkList l1;cin >> n;for (int i = 1; i <= n; i++){cout << i;l1.insert(i - 1, i);}l1.display();cout << endl;l1.reverseList()->display();return 0;
}

http://www.lryc.cn/news/42458.html

相关文章:

  • 文心一言 vs GPT-4 —— 全面横向比较
  • rancher2.6进阶之kubectl安装
  • 图像基本变换
  • 基于文心一言的底层视觉理解,百度网盘把「猫」换成了「黄色的猫」
  • 安卓开发的环境配置教程
  • 【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程
  • 关于自动机器学习flaml训练时的一些报错
  • 【计算机视觉】消融实验(Ablation Study)是什么?
  • Java毕业论文参考文献参考例子整理
  • C++ Primer第五版_第六章习题答案(21~30)
  • SLAM算法之HectorSLAM,Gmapping,KartoSLAM,CoreSLAM和LagoSLAM
  • phpstorm断点调试
  • 做一个前端网页送给女朋友~轮播图+纪念日
  • CSDN 编程竞赛三十九期题解
  • ChatGPT来了你慌了吗?
  • Dijkstra 算法
  • EIgamal 算法实现与解读
  • 静态通讯录动态通讯录制作详解
  • 2023最新最详细【接口测试总结】
  • 【java基础】Stream流的各种操作
  • 【Python练习】序列结构
  • CDN加速缓存的定义与作用
  • Java并发高频面试题
  • CVPR 2023 | 旷视研究院入选论文亮点解读
  • Vue3 学习总结补充(一)
  • 使用ChatGPT 开放的 API 接口可以开发哪些自研工具?
  • I2C和SPI总线以及通信
  • Spring八股文
  • 20 k8sMetric 简介
  • 面试问了解Linux内存管理吗?10张图给你安排的明明白白