Stefanie_Young 2015-05-04 07:23 采纳率: 0%
浏览 1530

麻烦大家帮我看看在这个单链表的程序哪儿有问题嘛

#include
#include
#include
using namespace std;

typedef struct
{
unsigned long int ID; //课程代码
string lesson; //课程名字
double credit; //学分
int term; //开课学期
}Lessons,*pLessons;

typedef struct node //一个结点的数据类型
{
Lessons data;

node *next;
}NODE,*pNODE;

pNODE LinkList_Init() //创建一个空链表
{
NODE *p;
p=new NODE;
if(p==NULL)
{
cout<<"内存不足!";
exit(0);
}
p->next=NULL;
return p;

}

int LinkList_Length(pNODE head)
{
int Count=0; //计数器:存放表长
pNODE p=head->next;
while(p!=NULL)
{
Count++;
p=p->next;
}
return Count;
}

pNODE makeList(int n,ifstream &in) //尾插法生成链表(带头结点)
{
pNODE head=LinkList_Init(); //生成空表
pNODE tail=head; //尾插法
pNODE node; //一个结点(数据域+指针域)
Lessons data; //一个结点的数据(一条记录)
for(int i=0;i {
in>>data.ID;
in>>data.lesson;
in>>data.credit;
in>>data.term;
//----------尾插法生成链表--------------
node=new NODE;
node->data=data; //结点赋值
tail->next=node; //连入链表
tail=node; //尾结点移位
}
tail->next=NULL;
return head;
}

int LinkList_Print(pNODE head) //显示结点数据
{
pNODE p=head->next;
while(p!=NULL)
{
cout<data.ID< coutdata.lesson< coutdata.credit< coutdata.term< p=p->next;
}
return 0;
}

pNODE List_Locate(pNODE head,string lesson)
{ //按课程名称查找
pNODE p=head->next;
while(p!=NULL&&p->data.lesson!=lesson)
p=p->next;
if(p==NULL)
return NULL; //没找到
return p; //返回该结点指针
}

pNODE List_Prior(pNODE head,string lesson) //查找前一个结点
{
pNODE p=head;
while(p->next!=NULL&&p->next->data.lesson!=lesson)
p=p->next; //p为前一个结点
if(p->next==NULL)
return NULL;

return p;
}
pNODE link_Insert(pNODE head,pNODE s)
{
pNODE p=head;
while(p->next!=NULL&&s->data.lesson>p->next->data.lesson)
p=p->next;
s->next=p->next;
p->next=s;
return head;
}

pNODE link_Delete(pNODE head,string lesson) //删除某结点
{
pNODE p=head,s;
while(p->next!=NULL&&p->next->data.lesson!=lesson)
p=p->next;
if(p->next==NULL)
return head;
s=p->next;
p->next=s->next;
delete s;
return head;
}

void LinkList_Free(pNODE head) //删除整个链表
{ //每次删除表头
pNODE p;
while(head)
{
p=head;
head=head->next;
delete p;
}
}

int main()
{
int RecNum; //文件中的记录数
ifstream infile("大三课程.txt"); //打开文件
char *temp=new char[1024];
infile>>temp; //读不用的信息
infile>>RecNum;

infile.getline(temp,1024,'\n');
infile.getline(temp,1024,'\n');
delete[] temp;
pNODE head=makeList(RecNum,infile); //创建链表
infile.close(); //关闭文件
int n=LinkList_Length(head);
cout<<"结点个数:"< cout pNODE node=List_Locate(head,"数据库系统");
coutdata.ID<<" "<data.lesson< cout link_Delete(head,"计算机组成原理");
n=LinkList_Length(head);
cout cout Lessons one={6015039,"数学建模",2,7};
pNODE newNode=new NODE; //新创建一个结点
newNode->data=one;
newNode->next=NULL;
link_Insert(head,newNode);
n=LinkList_Length(head);
cout<<"结点个数:"<<n<<endl;
LinkList_Free(head);
cout<<"表头结点地址:"<<head<<endl;
system("pause");
return 0;
}

  • 写回答

2条回答 默认 最新

  • bullzerone 2015-05-04 11:21
    关注

    你的错误太多了,链表初始化有问题,应该用二级指针,还有你的makelist()中循序写的右问题,cin有问题;listprint中data没有声明,你应该在函数参数中
    包含 Lessons data,while循环中输出数据的表达式有问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 luckysheet
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误