成功解决引发了未经处理的异常:读取访问权限冲突。 p 是 0xFFFFFFFFFFFFFFF7。

以下为代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

struct Node {
	int data;
	Node *next;
};

struct List {
	int length;
	Node *head;
};

void addNode(List *lis,int val) {
	Node* currentp = new Node;
	currentp->data = val;
	currentp->next = NULL;

	if (lis->head == NULL) {//如果插入的结点是第一个结点
		lis->head = currentp;
		lis->head->next = NULL;
		lis->length = 1;

	}
	else {//尾插法
		Node* p = lis->head;
		while (p->next != NULL) p = p->next;//报错
		p->next = currentp;
		p->next->next = NULL;
		lis->length++;
	}
}

int main() {
	int n;
	cin >> n;
	List* lis = new List;
	//初始化,这里加上就可以了
	//lis->head = NULL;
	//lis->length = 0;

	for (int i = 0; i < n; i++) {
		int a; 
		cin >> a;
		addNode(lis, a);
	}
	Node* p = lis->head;
	while (p) {
		cout << p->data << ' ';
		p = p->next;
	}
	return 0;
}

报错:
在这里插入图片描述
原因:
在main函数中我们初始的list只是new了,但是没有初始化


版权声明:本文为qq_16488989原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。