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

}

回答

if (L1 = NULL)

{

return L2;

}

else if(L2 = NULL)

{

return L1;

}

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

以上是 引发了异常: 读取访问权限冲突。 L1 是 nullptr。//单链表练习 的全部内容, 来源链接: utcz.com/a/54413.html

回到顶部