指针赋不了值,求大神
如下,写了模拟链表的函数,若直接写insert(1),程序运行成功,但若int a=0;cin>>a;insert(a)则程序会崩溃,单步调试发现执行到showlist()中绿字处,无法给p赋值。求大神帮助!代码是助教上课当场写的,老师看了没问题,不知道为什么换了cin就会出粗,若直接insert(1)单步调试时指针能赋值。
#include <iostream>
using namespace std;
void showList();
struct Node{
int val;
Node* next;
};
struct Node* head = NULL;
//从小到大排序插入
void insert(int val){
Node* node = new Node;
node->val = val;
node->next= NULL;
if(!head){
head = node;
}else if(head->val > val){
node->next = head;
head = node;
}else{
Node* q = head->next;
while(q->next && q->next->val < val)
q = q->next;
node->next = q->next;
q->next = node;
}
showList();
}
void deleteNode(int val){
Node* p = head;
if(!head){
return;
}else if(head->val == val){
head = head->next;
delete p;
}else{
while(p->next && p->next->val != val)
p = p->next;
if(p->next){
Node* q = p->next;
p->next = p->next->next;
delete q;
}
}
showList();
}
void releaseList(){
while(head){
Node* p = head;
head = head->next;
delete p;
}
}
void showList(){
Node* p = head;
while(p){
cout << p << ", " << p->val << ", " << p->next << endl;
[color=#FFFF00] p = p->next;[/color]
}
cout << endl;
}
int main(){
int a=0;
cin>>a;
insert(a);
insert(3);
//直接下面可行,加入cin出错
/*
insert(4);
insert(3);
insert(6);
insert(5);
deleteNode(3);
deleteNode(5);
deleteNode(6);
deleteNode(7);
deleteNode(4);
releaseList();
*/
return 0;
}