小菜冀 2023-10-03 16:03 采纳率: 100%
浏览 7
已结题

C语言数据结构链表逆置


#include <stdio.h>
#include <malloc.h>
#define N 10010
int a[N];

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

struct ListNode* reverseList(struct ListNode* head){
    printf("reListNode\n");
    if (head == NULL || head->next == NULL)
            return head;
    struct ListNode *p = head->next, *q;
    head->next = NULL;
    while (p != NULL){
        q = p->next;
        p->next = head;
        head = p;
        p = q;
    }
    return head;
}

void OutListNode (struct ListNode *L){
    struct ListNode *q;
    q = L->next;
    printf("OutListNode\n");
    while(q != NULL){
        printf("%d", q->val);
        q = q->next;
    }
}

struct ListNode* CreateList(struct ListNode *L, int a[], int n){
    printf("CreateListNode\n");
    struct ListNode* p = L->next;
    for (int i = 0; i < n; i ++){
        p->val = a[i];
        p = p->next;
    }
    printf("cend");
    return L;
}

void DestroyList(struct ListNode *L){
    printf("555");
    struct ListNode *q, *pre;
    pre = L;
    while (q != NULL){
        q = pre->next;
        free(pre);
    }
}

int main() {
    struct ListNode *L;
    L = (struct ListNode *)malloc(sizeof(struct ListNode));
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
        scanf("%d", a+i);
    CreateList(L, a[N], n);
    L = reverseList(L);
    OutListNode(L);
    DestroyList(L);
    return 0;

}

想实现一下链表逆置,为啥这个代码没有进Out里面啊?

img

结果是这么个玩意

  • 写回答

2条回答 默认 最新

  • 陌柒2333 2023-10-09 23:47
    关注

    我主页里有关于链表的文章,里面有链表逆置的详细的代码,你可以对比一下,有不懂的来问我。
    http://t.csdnimg.cn/H4h1a

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月21日
  • 已采纳回答 10月13日
  • 创建了问题 10月3日