动动脑筋吧!
#include<iostream>
using namespace std;
#define NULL 0
struct Data
{
long num;
char name[29];
int score;
Data *next;
}men[4];
int main(void)
{
Data *def(Data *head,long num );
int i;
long no;
Data *p;
for(i=0;i<4;i++)
{
cout<<"请输入第"<<i+1<<"个学生的数据:"<<endl;
cin>>men[i].num>>men[i].name>>men[i].score;
}
for(i=0;i<4;i++)
cout<<men[i].num<<" "<<men[i].name<<" "<<men[i].score<<endl;
cout<<"请输入要去除学生的学号:"<<endl;
cin>>no;
p=def(men,no);
do
{
cout<<p->num<<" "<<p->name<<" "<<p->score<<endl;
p=p->next;
}while(p!=NULL);
return 0;
}
Data *def(Data *head,long num )
{
Data *q1,*q2;
if(head==NULL)
{
cout<<"无链表!"<<endl;
return head;
}
for(q1=head;num!=q1->num&&q1->next!=NULL;q1=q1->next)
q2=q1;
if(num==q1->num)
{
if(q1==head)
head=q1->next;
else
q2->next=q1->next;
}
else
cout<<"找不到给同学!"<<endl;
return head;
}
这个程序目的是将4个学生数据输入,然后利用学号去掉一个节点,语法没错误,可是运行总停在"找不到该同学!"这一步,就算学号输入正确也是这样显示!为什么呢?
[解决办法]
for循环的问题!!!
[解决办法]
for循环有问题,而且删除节点也有点问题。
[解决办法]
楼主还是好好看看链表吧,你的用法很奇怪,既不是数组,也不是链表