单链表实验
想把两个有序链表合并成一个有序链表
但是在运行的时候引发了一场,读取访问权限冲突
我该怎么弄?
运行的结果如下:
我的代码如下所示
//编写程序将两个有序表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);
}