程序实现了一个单链表的逆序。请完成函数list_reverse()。

程序实现了一个单链表的逆序。请完成函数list_reverse()。

函数接口定义:
Node* list_reverse(Node* head)
head是单链表的头指针,函数返回逆序后的头指针。

裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct ListNode {
int num;
struct ListNode *next;
}Node;

Node createlist();/根据用户输入的整数n,创建具有n个结点的单链表。裁判实现,细节不表/
Node
list_reverse(Node* head);
void display(Node *head);/输出链表结点的数据域。裁判实现,细节不表/

int main(void)
{
Node *head,*p;
head = createlist();
head = list_reverse(head);
display(head);
return 0;
}

/* 请在这里填写答案 */
输入样例:
5
1 2 3 4 5
输出样例:
在这里给出相应的输出。例如:

5 4 3 2 1

供参考:

Node *list_reverse(Node* head)
{
    Node *p = head,*q = NULL;
    head = NULL;
    while (p){
         q = p;
         p = p->next;
         q->next = head;
         head = q;
    }
    return head;
}

你好,如有帮助,请采纳




LNode* list_reverse(LNode *head) {
    LNode *next = NULL;
    LNode *prev = NULL;

    while (head) {
        next = head->next;
        head->next = prev;
        prev = head;
        head= next;
    }

    return prev;
}