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

引发了异常: 读取访问权限冲突。 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;
    }
    

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

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

报告相同问题?

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题