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

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

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

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

报告相同问题?

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。