weixin_49681274
penbérine
2020-10-03 20:50
采纳率: 100%
浏览 453

引发了异常: 读取访问权限冲突。 L1 是 nullptr。//单链表练习

单链表实验
想把两个有序链表合并成一个有序链表
但是在运行的时候引发了一场,读取访问权限冲突
我该怎么弄?
运行的结果如下:
图片说明
我的代码如下所示

//编写程序将两个有序表LA,LB合并成一个有序表LC并且上机调试
#include<stdio.h>
#include<malloc.h>
typedef struct LNode
{
    int data;
    struct LNode *next;
}LinkNode;
void CreateList(LinkNode *&L, int a[], int n)//头插法创建单链表
{
    L = (LinkNode *)malloc(sizeof(LinkNode));
    LinkNode *s = NULL;
    L->next = NULL;//很重要,没有这个会有文件访问冲突的问题
    if (n > 0)
    {
        for (int i = 0; i < n; i++)
        {
            s = (LinkNode *)malloc(sizeof(LinkNode));
            s->data = a[i];
            s->next = L->next;
            L->next = s;
        }
    }
    else
    {
        printf("error!n小于0无法顺利创建单链表");
    }
}
void CreateListF(LinkNode *&L, int a[], int n)//尾插法
{
    L = (LinkNode *)malloc(sizeof(LinkNode));
    LinkNode *r = L;
    LinkNode *s = NULL;
    if (n > 0)
    {
        for (int i = 0; i < n; i++)
        {
            s = (LinkNode *)malloc(sizeof(LinkNode));
            s->data = a[i];
            r->next = s;
            r = s;
        }
        r->next = NULL;
    }
    else
    {
        printf("error!!");
    }
}
void dispList(LinkNode *&L)//输出链表
{
    LinkNode *p = L->next;
    while (p != NULL)
    {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");
} 
LinkNode *Merge(LinkNode *L1, LinkNode *L2)
{
    if (L1 = NULL)
    {
        return L2;
    }
    else if(L2 = NULL)
    {
        return L1;
    }
    LinkNode *L3 = NULL;
    if (L1->data < L2->data)
    {
        L3 = L1;
        L3->next = Merge(L1->next, L2);
    }
    else
    {
        L3 = L2;
        L3->next = Merge(L1, L2->next);
    }
        return L3;
}
int main()
{
    LinkNode *L1= NULL;
    LinkNode *L2= NULL;
    LinkNode *L3 =NULL;
    int a[10] = { 2,4,6,8,10 };
    int b[10] = { 1,3,5,7,9 };
    CreateList(L1, a, 5);
    CreateList(L2, b, 5);
    L3 = Merge(L1, L2);
    dispList(L3);
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • caozhy
    已采纳
    if (L1 = NULL)
    {
        return L2;
    }
    else if(L2 = NULL)
    {
        return L1;
    }
    

    这里,=是赋值,要用==

    点赞 评论

相关推荐