为什么无法实现要求?

题目:单链表逆转

img


裁判测试程序样例:

#include 
#include 

typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
    ElementType Data;
    PtrToNode   Next;
};
typedef PtrToNode List;

List Read(); /* 细节在此不表 */
void Print( List L ); /* 细节在此不表 */

List Reverse( List L );

int main()
{
    List L1, L2;
    L1 = Read();
    L2 = Reverse(L1);
    Print(L1);
    Print(L2);
    return 0;
}

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


img


我的代码:

List Reverse(List L)
{
    List p, q, r;
    if (L->Next == NULL)
        return L;
    if (L->Next->Next == NULL)
        return L;
    p = L->Next;
    q = p->Next;
    p->Next = NULL;
    while (q != NULL)
    {
        r = q->Next;
        q->Next = p;
        p = q;
        q = r;
    }
    L->Next = p;
}

函数没有返回值啊,L->Next = p;后面加上 return L;

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^