读书人

dele和insert函数 哪里有有关问题

发布时间: 2013-03-17 13:48:31 作者: rapoo

dele和insert函数 哪里有问题

引用
#include<iostream>
#include<string>
using namespace std;
struct Student
{
string name;
int num;
Student *next;
};
Student *creat()
{
Student *p1,*p2;
Student *head;
int n=0;
p1=p2=new Student;
cout<<"请输入学生信息"<<endl;
cin>>p1->name>>p1->num;
head=NULL;
while(p1->num!=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=new Student;
cin>>p1->name>>p1->num;
}
p2->next=NULL;
return head;
}
Student *insert(Student *stu)
{
Student *p,*p1,*head;
cout<<"请输入你要插入的个人信息"<<endl;
p=new Student;
cin>>p->name>>p->num;
head=stu;
p1=stu->next;
while(p1->next!=NULL)
{
if(p->num<=p1->num&&p->num>=stu->num)
{
stu->next=p;
p->next=p1;
break;
}
else
{
stu=stu->next;
p1=p1->next;
}

} return head;
}
Student *del(Student *stu)
{
Student *head,*p,*dele;
p=head=stu;
dele=new Student;
cout<<"请输入你要删除的学号"<<endl;
cin>>dele->num;
while(stu->next!=NULL)
{
if(stu->name!=dele->name)
{
p->next=stu;
stu=stu->next;
}
else
{
p->next=stu->next;
break;


}
}
return head;
}
void Print(Student *p)
{
do
{
cout<<p->name<<p->num<<endl;
p=p->next;
}while(p!=NULL);
}
int main()
{
Student *p;
p=creat();
Print(p);
p=insert(p);
Print(p);
p=del(p);
Print(p);
return 0;
}

dele和insert函数 哪里有有关问题插入失败 输入要删除的学号 后 就不运行了 怎么解决啊
[解决办法]
删除时要判num而不是name。还要考虑被删的是否head等。试修改如下:
    cout<<"请输入你要删除的学号"<<endl;
cin>>dele->num;
while(stu!=NULL) //while(stu->next!=NULL)
{
if(stu->num!=dele->num)//if(stu->name!=dele->name)
{
p=stu; //p->next=stu;
stu=stu->next;
}
else
{
if (stu == head)//加
{
head = stu->next;//加
}
else
{
p->next = stu->next;
}
delete stu;//加
break;
}
}

[解决办法]
不要ele=new Student;
只要定义num即可:int num;

Student *del(Student *stu)
{
Student *head,*p;//删,*dele;
int num;//加
p=head=stu;
//删dele=new Student;
cout<<"请输入你要删除的学号"<<endl;
cin>>num;//cin>>dele->num;
while(stu!=NULL) //while(stu->next!=NULL)
{
if(stu->num!=num)//if(stu->name!=dele->name)
{
p=stu; //p->next=stu;
stu=stu->next;


}
else
{
if (stu == head)//加
{
head = stu->next;//加
}
else
{
p->next = stu->next;
}
delete stu;//加
break;
}
}
return head;
}

读书人网 >C++

热点推荐