📜  C程序反转单向链表中的每个节点值(1)

📅  最后修改于: 2023-12-03 15:14:26.185000             🧑  作者: Mango

反转单向链表中每个节点值

在C语言中,我们可以通过以下代码实现反转单向链表中每个节点值:

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

// 定义一个单向链表结构体
struct node{
    int data;
    struct node* next;
};

// 反转单向链表中每个节点的值
void reverseList(struct node* head){
    struct node* p = head;
    while(p!=NULL){
        p->data = ~p->data; // 取反操作
        p = p->next; // 移动指针
    }
}

int main(){
    // 创建一个单向链表
    struct node* head = (struct node*)malloc(sizeof(struct node));
    head->data = 1;
    head->next = NULL;
    struct node* p = head;
    for(int i=2;i<=5;i++){
        p->next = (struct node*)malloc(sizeof(struct node));
        p->next->data = i;
        p->next->next = NULL;
        p = p->next;
    }

    // 输出反转前的链表
    printf("反转前的链表:\n");
    p = head;
    while(p!=NULL){
        printf("%d ",p->data);
        p = p->next;
    }

    // 反转单向链表中每个节点的值
    reverseList(head);

    // 输出反转后的链表
    printf("\n反转后的链表:\n");
    p = head;
    while(p!=NULL){
        printf("%d ",p->data);
        p = p->next;
    }

    return 0;
}

上述代码中,我们定义了一个单向链表结构体node,其中包括了一个整型变量data和一个指向下一个节点的指针next。我们创建一个单向链表并初始化了其中的节点。在reverseList函数中,我们使用了一个循环来遍历链表中的每个节点,对节点中的数据进行取反(~)操作,从而实现了链表节点值的反转。最后,在main函数中,我们输出了反转前和反转后的链表的节点值。

以上就是反转单向链表中每个节点的值的C语言实现,希望对大家有所帮助!