高分!!C++高手进,帮我看看哪里错了

[复制链接]
查看11 | 回复3 | 2016-11-4 11:57:07 | 显示全部楼层 |阅读模式
动态链表基本练习,如下,编译无措,运行后出错:
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;
}
}
}

回复

使用道具 举报

千问 | 2016-11-4 11:57:07 | 显示全部楼层
//因为我不知道你的到底要操作什么样的文件.所以文件一个地方没有改好.//其它的地方都改好了.#include#includeusing namespace std;struct student{
int num;
int grade;
student *next;}; ifstream fin("linet.in");//这里有问题.参数filename是文件的完整路径名! ofstream fout("linet.out");//错误同上.student *a,*b,*head,*p,*q;int n ; void fin
回复

使用道具 举报

千问 | 2016-11-4 11:57:07 | 显示全部楼层
两个错误,Borland C++ 5.6.4 for Win32 Copyright (c) 1993, 2002 BorlandD:\temp\动态链表.cpp:Error E2313 D:\temp\动态链表.cpp 85: Constant expression required in function insert(int)/////
回复

使用道具 举报

千问 | 2016-11-4 11:57:07 | 显示全部楼层
利用断点找错哈,方便省事
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则