C语言reverse链表操作怎么做

   2024-10-08 4210
核心提示:要实现一个反转链表的操作,可以按照以下步骤进行:定义一个函数来实现链表的反转操作,函数的输入参数是链表的头指针,并且函数

要实现一个反转链表的操作,可以按照以下步骤进行:

定义一个函数来实现链表的反转操作,函数的输入参数是链表的头指针,并且函数的返回值也是链表的头指针。

遍历整个链表,将每一个节点的指针方向反转,即将每个节点的next指针指向其前一个节点。

使用三个指针分别指向当前节点、前一个节点和下一个节点,通过循环不断更新这三个指针的位置,直到遍历完整个链表。

最后返回反转后的链表的头指针即可。

下面是一个示例代码实现:

#include <stdio.h>struct ListNode {    int val;    struct ListNode *next;};struct ListNode* reverseList(struct ListNode* head) {    struct ListNode *prev = NULL;    struct ListNode *current = head;    struct ListNode *next = NULL;    while (current != NULL) {        next = current->next;        current->next = prev;        prev = current;        current = next;    }    return prev;}int main() {    // 构建一个简单的链表 1 -> 2 -> 3 -> 4 -> 5    struct ListNode *node1 = (struct ListNode*)malloc(sizeof(struct ListNode));    struct ListNode *node2 = (struct ListNode*)malloc(sizeof(struct ListNode));    struct ListNode *node3 = (struct ListNode*)malloc(sizeof(struct ListNode));    struct ListNode *node4 = (struct ListNode*)malloc(sizeof(struct ListNode));    struct ListNode *node5 = (struct ListNode*)malloc(sizeof(struct ListNode));    node1->val = 1;    node1->next = node2;    node2->val = 2;    node2->next = node3;    node3->val = 3;    node3->next = node4;    node4->val = 4;    node4->next = node5;    node5->val = 5;    node5->next = NULL;    // 反转链表    struct ListNode *reversedHead = reverseList(node1);    // 遍历链表输出反转后的结果    struct ListNode *current = reversedHead;    while (current != NULL) {        printf("%d ", current->val);        current = current->next;    }    return 0;}

在这个示例代码中,我们构建了一个简单的链表1 -> 2 -> 3 -> 4 -> 5,并调用reverseList函数对链表进行反转操作,最后输出反转后的结果。

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号