c语言怎么逆置链表

逆置链表是指将一个链表中的元素顺序颠倒过来,下面是一个详细的步骤,使用C语言实现逆置链表:

十多年的涪城网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整涪城建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“涪城网站设计”,“涪城网站推广”以来,每个客户项目都认真落实执行。

1、定义链表节点结构体:

struct ListNode {
    int val; // 节点的值
    struct ListNode *next; // 指向下一个节点的指针
};

2、创建一个新的空链表头节点:

struct ListNode* reverseList(struct ListNode* head) {
    // 创建一个新的空链表头节点
    struct ListNode* newHead = NULL;
    // ...
}

3、遍历原链表,将每个节点插入到新链表的头部:

struct ListNode* reverseList(struct ListNode* head) {
    // 创建一个新的空链表头节点
    struct ListNode* newHead = NULL;
    // 遍历原链表,将每个节点插入到新链表的头部
    while (head != NULL) {
        // 保存当前节点的下一个节点指针
        struct ListNode* next = head>next;
        // 将当前节点插入到新链表的头部
        head>next = newHead;
        // 更新新链表头节点为当前节点
        newHead = head;
        // 移动到下一个节点
        head = next;
    }
    // 返回新链表的头节点
    return newHead;
}

4、完整代码示例:

#include 
#include 
struct ListNode {
    int val; // 节点的值
    struct ListNode *next; // 指向下一个节点的指针
};
// 创建新的节点并初始化值和指针域为NULL
struct ListNode* createNode(int val) {
    struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
    newNode>val = val;
    newNode>next = NULL;
    return newNode;
}
// 逆置链表函数实现
struct ListNode* reverseList(struct ListNode* head) {
    // 创建一个新的空链表头节点
    struct ListNode* newHead = NULL;
    // 遍历原链表,将每个节点插入到新链表的头部
    while (head != NULL) {
        // 保存当前节点的下一个节点指针
        struct ListNode* next = head>next;
        // 将当前节点插入到新链表的头部
        head>next = newHead;
        // 更新新链表头节点为当前节点
        newHead = head;
        // 移动到下一个节点
        head = next;
    }
    // 返回新链表的头节点
    return newHead;
}
// 打印链表函数实现(用于测试)
void printList(struct ListNode* head) {
    struct ListNode* current = head;
    while (current != NULL) {
        printf("%d ", current>val); // 打印当前节点的值
        current = current>next; // 移动到下一个节点
    }
    printf("
"); // 换行符,使输出更清晰可读
}
int main() {
    // 创建一个包含5个节点的链表:1 > 2 > 3 > 4 > 5 > NULL
    struct ListNode* head = createNode(1); // 创建头节点并赋值为1,指针域为NULL(初始时)
    head>next = createNode(2); // 创建第二个节点并赋值为2,指针域指向头节点(初始时)
    head>next>next = createNode(3); // 创建第三个节点并赋值为3,指针域指向第二个节点(初始时)

网站标题:c语言怎么逆置链表
文章地址:http://www.gawzjz.com/qtweb2/news12/18462.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联