p3pinot 2020-10-03 20:50 采纳率: 100%
浏览 1053
已采纳

引发了异常: 读取访问权限冲突。 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条回答 默认 最新

  • threenewbee 2020-10-03 22:41
    关注
    if (L1 = NULL)
    {
        return L2;
    }
    else if(L2 = NULL)
    {
        return L1;
    }
    

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!