动态链表基本练习,如下,编译无措,运行后出错:
Program has received a signal-name="SIGSEGV",signal-meaning="Segmentation fault" at insert(int)({name="x",value="1"}), file E:\资料\程序设计\programs\c++\17-2\linet.cpp:90
#include
#include
using namespace std;
struct student
{
int num;
int grade;
student *next;
};
ifstream fin("linet.in");
ofstream fout("linet.out");
student *a,*b,*head,*p,*q;
int n ;
int main()
{
void find(int);
void insert(int);
void del(int);
int i,m,z,x;
fin>>n;
a=new student;
b=a;
head=a;
fin>>a->num>>a->grade;
for(i=0;inext=a;
b=a;
a=new student;
fin>>a->num>>a->grade;
}
a->next=NULL;
fin>>m;
for(i=1;i>z>>x;
if(z==1) find(x);
if(z==2) insert(x);
if(z==3) del(x);
}
delete b;
return 0;
}
void find(int x)
{
if(x==0)
{
foutnumgradenext;
}
}
else
{
int y;
fin>>y;
p=head;
while(p->num!=y)
{
if(p==a)
{
foutnext;
}
foutnumgrade;
}
}
void insert(int x)
{
int y[x][3],i;
for(i=0;i>y[1]>>y[2]>>y[3];
p=head;
while(p->num!=y[1]) p=p->next;
if(p==a)
{
foutnext->num)//!!
{
foutnext=p->next;
q->num=y[2];
q->grade=y[3];
p->next=q;
}
}
void del(int x)
{
int y[x],i;
n=n-x;
for(i=0;i>y;
if(head->num==y)
{
head=head->next;
p=head;
}
else
{
p=head;
q=p->next;
while(q->num!=y)
{
p=p->next;
q=p->next;
}
p->next=q->next;
}
}
}
|