C语言数据结构链表使用了未初始化的局部变量

毕设工厂 其他问答 1
#include<stdio.h>
#include<malloc.h>
typedef struct LNode {
    int data;
    struct LNode* next;
}LNode, * LinkList;

int InitList_L(LinkList& L);
void CreatList(LinkList& L, int n,LNode *p);

int main() {
    LinkList L1,L2;
    LNode* p1, * p2;
    int i,n1,n2;

    InitList_L(L1);
    InitList_L(L2);

    printf("L1中的数据个数\n");
    scanf("%d",&n1);
    CreatList(L1,n1,p1);

    printf("L2中的数据个数\n");
    scanf("%d", &n2);
    CreatList(L2, n2, p2);

    return 0;
}
//初始化
int InitList_L(LinkList& L) {
    L = (LinkList)malloc(sizeof(LNode));
    L->next = NULL;
    return 1;
}
//头插法建立单链表
void CreatList(LinkList& L, int n,LNode *p) {
    int i;
    for (i = n; i > 0; --i) {
        scanf("%d",&p->data);
        p->next = L->next;//插入到表头
        L->next = p;
    }
}

回复

共2条回复 我来回复
  • 代码助手
    这个人很懒,什么都没有留下~
    评论
    struct ListNode{
        int val;
        ListNode *next;
        ListNode(int x) : val(x), next(nullptr){
        }
    }
    // 尾差法
    ListNode* CreateList(int length){
        if (length < 1)
            return nullptr;
        ListNode *head = new ListNode(length);
        ListNode *s = head;
        int k = 1;
        ListNode *r = nullptr;
        srand(unsigned(time(0)));
        while (k <= length){
            r = new ListNode(rand());
            s -> next = r;
            s = r;
            k++;
        }
        s -> next = nullptr;
        return head;
    }
    
    0条评论
  • 代码海岸
    这个人很懒,什么都没有留下~
    评论

    22行使用了p1,26行使用了p2,p1和p2在14行声明后没有赋值。 第14行修改为:

    LNode* p1 = 0, *p2 = 0;
    
    0条评论

发表回复

登录后才能评论