首页 > 小白c语言链表问题

小白c语言链表问题

刚开始学c,在刷题,debug了好久没有发现问题。。不知道下述代码中的p_node为什么一直是null,请各位大神指点一波?
问题描述:
4-3 求链式表的表长 (10分)
本题要求实现一个函数,求链式表的表长。
输入样例:

1 3 4 5 2 -1
输出样例:

5

我的代码:

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

typedef int ElementType;
typedef struct LNode *PtrToLNode;
struct LNode {
    ElementType Data;
    PtrToLNode Next;
};
typedef PtrToLNode List;

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

int Length( List L );

int main()
{
    List L = Read();
    printf("%d\n", Length(L));
    return 0;
}

/* 你的代码将被嵌在这里 */
List Read()
{
    ElementType a[100];
    int i = 0;
    List p_list,p_node;

//    初始化链表
    p_list = (List)malloc(sizeof(List));

    for (int j = 0; j < 100; ++j) {
        a[j] = 0;
    }
    //一直扫描,直到输入为-1时跳出
    scanf("%d",&a[i]);
    p_list->Data = a[i];
    p_list->Next = NULL;
    p_node = p_list->Next;

    while (a[i]!=-1)
    {
        i++;
        scanf("%d",&a[i]);
        p_node = (List)malloc(sizeof(List));
        p_node->Data = a[i];
        p_node->Next = NULL;
        p_node = p_node->Next;
    }
    return p_list;
}
int Length( List L )
{
    int num;
    while (L->Next != NULL)
        num++;
    return num-1;
}

问题已解决,链表新建部分出现问题。

【热门文章】
【热门文章】