VS引发了异常:读取访问权限冲突。p是nullptr(C++)
VS引发了异常:读取访问权限冲突。p是nullptr(C++)在写链表的时候有时会遇到以下问题:代码如下:#include<iostream>using namespace std;typedef struct stru {int data;struct stru *next;} LinkList;void CreateListR(LinkList *&L, int arr[]
·
VS引发了异常:读取访问权限冲突。p是nullptr(C++)
在写链表的时候有时会遇到以下问题:
代码如下:
#include<iostream>
using namespace std;
typedef struct stru {
int data;
struct stru *next;
} LinkList;
void CreateListR(LinkList *&L, int arr[], int n) {
L = new LinkList;
L->next = NULL;
LinkList *p = L, *q;
for (int i = 0; i < n; i++) {
q = new LinkList;
q->data = arr[i];
p->next = q;
p = q;
}
p->next = NULL;
}
int main()
{
LinkList *L1, *L2;
int arr1[] = { 1,6,11 };
int arr2[] = { 2,3,4,5 };
CreateListR(L1, arr1, sizeof(arr1) / sizeof(arr1[0]));
CreateListR(L2, arr2, sizeof(arr2) / sizeof(arr2[0]));
LinkList *p1 = L1->next, *p2 = L2->next;
while (p1->data != p2->data && p1 != NULL && p2 != NULL) {
p1 = p1->next;
p2 = p2->next;
}
system("pause");
return 0;
}
出现这种问题的可能原因是:在while循环的判断条件里,由于&&是先判断前者的真假,而此时p1已为NULL,无法读取data内存。
解决办法:
修改while循环的判断条件的顺序,优先判断是否为NULL。
while (p1 != NULL && p2 != NULL && p1->data != p2->data) {
p1 = p1->next;
p2 = p2->next;
}
更多推荐
已为社区贡献1条内容
所有评论(0)