首页 > 其他分享 >19080 反转链表

19080 反转链表

时间:2024-09-20 18:49:42浏览次数:3  
标签:19080 curr LNode 反转 NULL next 链表 prev 节点

### 思路
1. 初始化三个指针:`prev`(前驱节点),`curr`(当前节点),`next`(后继节点)。
2. 遍历链表,将当前节点的`next`指针指向前驱节点,实现反转。
3. 移动三个指针,继续反转下一个节点,直到遍历完整个链表。
4. 最后,将头节点指向新的头节点(即原链表的最后一个节点)。

### 伪代码
```
function reverseList(L):
    initialize prev as NULL
    initialize curr as L->next
    while curr is not NULL:
        next = curr->next
        curr->next = prev
        prev = curr
        curr = next
    L->next = prev
```

### C++代码

#include <iostream>
using namespace std;

struct LNode {
    int data;
    LNode *next;
};

void createList(LNode *&L, int n) {
    LNode *r, *p;
    r = L = new LNode;
    L->next = NULL;
    for (int i = 1; i <= n; i++) {
        p = new LNode;
        cin >> p->data;
        p->next = NULL;
        r->next = p;
        r = p;
    }
}

void trv(LNode *L) {
    L = L->next;
    while (L) {
        cout << L->data << ' ';
        L = L->next;
    }
    cout << endl;
}

void reverseList(LNode *&L) {
    LNode *prev = NULL, *curr = L->next, *next = NULL;
    while (curr != NULL) {
        next = curr->next;
        curr->next = prev;
        prev = curr;
        curr = next;
    }
    L->next = prev;
}

int main() {
    int n;
    LNode *L;
    cin >> n;
    createList(L, n);
    reverseList(L);
    trv(L);
    return 0;
}


 

标签:19080,curr,LNode,反转,NULL,next,链表,prev,节点
From: https://blog.csdn.net/huang1xiao1sheng/article/details/142325747

相关文章

  • 信息学奥赛初赛天天练-92-CSP-S2023阅读程序2-动态数组、反转函数、埃氏筛法、欧拉筛
    2023CSP-S阅读程序2判断题正确填√,错误填⨉;除特殊说明外,判断题1.5分,选择题3分,共计40分)01#include<iostream>02#include<cmath>03#include<vector>04#include<algorithm>05usingnamespacestd;0607longlongsolve1(intn){08vector<bo......
  • 单链表定义和操作
    首先是单链表的定义,使用结构体定义两个部分,分别是数据域和指针域。点击查看代码typedefstructLNode{ ElemTypedata; structLNode*next;}LNode,*LinkList;这里可以使用typedef关键字将后续的定义简化。具体例子如下:如果这样定义structLNode{}的话。在定义LNode类......
  • 循环链表实现约瑟夫问题
    问题描述利用循环链表实现:读入2个整数A和B,然后输出2个整数C和D。其中A表示人数,这些人的id分别为1,2,3,...A,他们按照id依次围成一圈。从id为1的人开始报数,报到B的人退出圈,然后从下一个人开始重新报数,报到B的人又退出圈,如此反复,直到剩下2人为止。C和D为剩下的......
  • 信息学奥赛初赛天天练-92-CSP-S2023阅读程序2-动态数组、反转函数、埃氏筛法、欧拉筛
    2023CSP-S阅读程序2判断题正确填√,错误填⨉;除特殊说明外,判断题1.5分,选择题3分,共计40分)01#include<iostream>02#include<cmath>03#include<vector>04#include<algorithm>05usingnamespacestd;0607longlongsolve1(intn){08vector<boo......
  • 关于链表逆序的(递归方法)
    LinkNode*turnoff(LinkNode*head){head->next->next=head;head->next=NULL;returnhead;//这里我们需要返回新的头(head);}以上我们创建了一个简单但函数还不是递归的。上述我们不可以从头开始,要从尾巴开始;这个时候需要递归一下到最后一个节点。即:LinkNode*turnoff......
  • 探秘Python中的链表:从零开始的奇妙之旅
    引言链表之所以重要,是因为它提供了一种灵活的方式来存储和操作数据集合。不同于数组,链表允许我们在无需重新分配内存的情况下动态地添加或删除元素。这使得它成为处理不确定大小数据集的理想选择。此外,在某些特定场景下(如实现缓存机制),链表可以比其他数据结构表现得更加出色......
  • 探秘Python中的链表:从零开始的奇妙之旅
    引言链表之所以重要,是因为它提供了一种灵活的方式来存储和操作数据集合。不同于数组,链表允许我们在无需重新分配内存的情况下动态地添加或删除元素。这使得它成为处理不确定大小数据集的理想选择。此外,在某些特定场景下(如实现缓存机制),链表可以比其他数据结构表现得更加出色。基础......
  • 【快慢指针】突破环形链表
      ......
  • 你的下一本有声书将有一个大反转:解说员...可能是一个(声音)克隆人!
    有声书业务正在蓬勃发展,但要想象高质量的表演者将每一本书都朗读出来几乎是不可能的。为了填补这一空白,亚马逊旗下的有声书服务Audible正在测试使用AI生成的声音克隆来加速这个过程。这个计划的设想是,大量增加具有音频格式的书籍,这个想法显然很有吸引力,但也带来了一些问题,比如......
  • 代码随想录Day3 | LeetCode 203. 移除链表元素、LeetCode 707. 设计链表、LeetCode 20
    LeetCode203.移除链表元素链表基础概念题,也可以用递归做,不过我们把递归的思想放在更能体现它的LeetCode206.反转链表#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next......