引发了未经处理的异常:读取访问权限冲突
问题描述:
请大神指教一下,调试显示 q 是nullptr,谢谢了
# include <malloc.h>
# include <stdlib.h>//exit
# include <stdio.h>
typedef struct Node
{
int data;
struct Node *next;
}Node, *LinkList;
LinkList Create_List(LinkList &L)
{
Node *p, *q;
int i, n;
int data;
L = (LinkList)malloc(sizeof(Node));
q = L;
printf("链表的长度为:");
scanf_s("%d", &n);
for (i = 0; i<n; i++)
{
scanf_s("%d", &data);
p = (struct Node*)malloc(sizeof(struct Node));
p->data = data;
q->next = p;
q = p;
}
q->next = NULL;
return L;
}
LinkList Merge_List(LinkList La, LinkList Lb)
{
Node *p, *q;
LinkList L;
L = (LinkList)malloc(sizeof(Node));
L = NULL;
p = La->next;
q = Lb->next;
while (La&&Lb)
{
if (La->data<Lb->data)
{
L = p;
p = p->next;
}
else
{
L = q;
q = q->next;
}
}
L = p ? p : q;
return L;
}
LinkList Reverse_List(LinkList L)
{
Node *p, *q;
p = L->next;
L->next = NULL;
while (p != NULL)
{
q = p->next;
p->next = L->next;
L->next = p;
p = q;
}
return L;
}
void Print_List(LinkList L)
{
Node *p = L->next;
while (p != NULL)
{
printf("%d", p->data);
p = p->next;
}
printf("\n");
}
int main()
{
LinkList La, Lb;
La = (LinkList)malloc(sizeof(Node));
Lb = (LinkList)malloc(sizeof(Node));
Create_List(La);
Create_List(Lb);
Print_List(Merge_List(La, Lb));
}
答
# include <malloc.h>
# include <stdlib.h>//exit
# include <stdio.h>
typedef struct Node
{
int data;
struct Node *next;
}Node, *LinkList;
LinkList Create_List(LinkList &L)
{
Node *q;
int i, n;
int data;
L = (LinkList)malloc(sizeof(Node));
q = L;
printf("链表的长度为:");
scanf_s("%d", &n);
for (i = 0; i<n; i++)
{
scanf_s("%d", &data);
q->data = data;
q->next = (LinkList)malloc(sizeof(struct Node));
if (i < n - 1)
q = q->next;
}
q->next = 0;
return L;
}
LinkList Merge_List(LinkList La, LinkList Lb)
{
LinkList p, t;
LinkList a = La, b = Lb;
if (La->data < Lb->data) {
t = p = La;
a = La->next;
}
else {
t = p = Lb;
b = Lb->next;
}
while (a!=NULL&&b!=NULL) {
if (a->data < b->data) {
t->next = a;
a = a->next;
t = t->next;
}
else {
t->next = b;
b = b->next;
t = t->next;
}
}
if (a == NULL) {
t->next = b;
}
else {
t->next = a;
}
return p;
}
LinkList Reverse_List(LinkList L)
{
Node *p, *q;
p = L->next;
L->next = NULL;
while (p != NULL)
{
q = p->next;
p->next = L->next;
L->next = p;
p = q;
}
return L;
}
void Print_List(LinkList L)
{
while (L != NULL)
{
printf("%d ", L->data);
L = L->next;
}
printf("\n");
}
int main()
{
LinkList La, Lb;
La = (LinkList)malloc(sizeof(Node));
Lb = (LinkList)malloc(sizeof(Node));
Create_List(La);
Create_List(Lb);
Print_List(Merge_List(La, Lb));
getchar();
getchar();
}
答
代码复制的不正确吧,Merge_List里面那句La->datadata
是什么
因为这个po提问平台默认使用了Markdown,建议在代码段前后加上```
这样才能看到正常代码