// test.cpp : 定义控制台应用程序的入口点。
//输入一个链表,反转链表后,输出链表的所有元素。
#include "stdafx.h"
#include <iostream>
using namespace std;
struct ListNode {
int val;
struct ListNode* next;
ListNode(int n) {
val = n;
}
};
int main()
{
ListNode n1(1);
ListNode n2(2);
ListNode n3(3);
ListNode n4(4);
ListNode n5(5);
ListNode n6(6);
n1.next = &n2;
n2.next = &n3;
n3.next = &n4;
n4.next = &n5;
n5.next = &n6;
ListNode* p = &n1;
ListNode* q = p->next;
ListNode* r=NULL;
p->next = NULL;
while (q != NULL) {
r = q->next;
q->next = p;
p = q;
q = r;
}
while (p) {
cout << p->val<<' ';
p = p->next;
}
system("pause");
return 0;
}
编译出错:引发了异常: 读取访问权限冲突, p 是 0xCCCCCCCC。(p为野指针)
解决办法:
方法1、修改struct ListNode{ }中的next指针赋值为NULL,如下:
struct ListNode {
int val;
struct ListNode* next=NULL;
ListNode(int n) {
val = n;
}
};
方法2:在main函数中的赋值语句中再加一句:
n6.next = NULL;