那个..初学者求教一下...
刚开始学C++ 求教个问题..
代码如下
#include <iostream>
using namespace std;
struct Node{
int content;
Node *next;
};
bool remove(Node *&h,int &a,int pos)
{
if (pos == 1)
{
Node *p=h;
h=h->next;
a=p->content;
delete p;
p=NULL;
return true;
}
else
{
Node *p=h;
int j=1;
while (j < pos-1)
{
if (p->next == NULL)
break;
p=p->next;
j++;
}
if (p->next != NULL)
{
Node *q=p->next;
p->next=q->next;
a=q->content;
delete q;
q=NULL;
return true;
}
else
{
cout<<"error!"<<endl;
return false;
}
}
}
int main()
{
Node s1,s2,s3,s4,s5;
s1.content=1;
s1.next=&s2;
s2.content=2;
s2.next=&s3;
s3.content=3;
s3.next=&s4;
s4.content=4;
s4.next=&s5;
s5.content=5;
s5.next=NULL;
Node *h=&s1;
int b;
remove(h,b,3);
for (Node *p=h; p != NULL;p=p->next)
cout<<p->content<<endl;
cout<<"The deleted number is "<<b<<endl;
getchar();
return 0;
}
代码在DEV中可以通过,但是VC++ 6.0就出现断言错误,我查了一些资料说是野指针/数组越界..的确将delete语句注释掉之后就可以运行,但不明白是怎么错了 求各位大神解答 小弟多谢了!