【c语言篇】每日一题-pta-实验11-2-9 链表逆置

题目如下:

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>

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

struct ListNode *createlist(); /*裁判实现,细节不表*/
struct ListNode *reverse( struct ListNode *head );
void printlist( struct ListNode *head )
{
     struct ListNode *p = head;
     while (p) {
           printf("%d ", p->data);
           p = p->next;
     }
     printf("\n");
}

int main()
{
    struct ListNode  *head;

    head = createlist();
    head = reverse(head);
    printlist(head);
    
    return 0;
}

/* 你的代码将被嵌在这里 */

 

 代码如下:

struct ListNode *reverse(struct ListNode *head) {
    if(!head || !head->next) { // 检查给定链表是否为空或仅有一个元素
        return head;
    }
    struct ListNode *prev = NULL, *current = head, *next;

    // 沿着链表遍历,将每个节点翻转,使其指向原本的前一个节点
    while(current) {
        next = current->next;//将current的下一个结点保存起来,为了在修改current->next指针后仍能找到链表的下一个结点
        current->next = prev;//指向其前面的指针,在这步完成了链表的逆置
        prev = current;//更新prev和current
        current = next;
    }
    //循环结束后,current变为NULL,而prev指针指向原始链表的尾节点,即新链表的头结点
    return prev;
}

相关推荐

  1. 实验11-2-5 拼接(PTA

    2024-03-20 05:08:04       20 阅读
  2. C语言每日(1)字符串

    2024-03-20 05:08:04       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-20 05:08:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-20 05:08:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-20 05:08:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-20 05:08:04       18 阅读

热门阅读

  1. 掌握C#中的GUI多线程技巧:WinForms和WPF实例详解

    2024-03-20 05:08:04       14 阅读
  2. OpenAI的ChatGPT应对大学会计考试

    2024-03-20 05:08:04       19 阅读
  3. ppt插件构思

    2024-03-20 05:08:04       15 阅读
  4. 富格林:理智做单增加出金盈利

    2024-03-20 05:08:04       17 阅读
  5. AI智能机器人的安装方法搭建电销机器人

    2024-03-20 05:08:04       17 阅读
  6. 共享旅游卡与我们当下的生活关联

    2024-03-20 05:08:04       17 阅读
  7. 机器学习流程—数据收集

    2024-03-20 05:08:04       17 阅读
  8. 每日一题:C语言经典例题之退票费的计算

    2024-03-20 05:08:04       18 阅读