帮忙看看这个程序cout到main最后都可以成功执行,为什么还是会内存报错?
#include <iostream.h>
#include <string.h>
#include <iomanip.h>
#include <stdlib.h>
#define PlanNum 8
typedef struct QNode1 //以定票人员信息
{
char name[20]; //姓名
int shuliang; //定票数量
char cangdeng; //票的仓等次
struct QNode1 *next;
}QNode1,*QueuePtr1;
typedef struct
{
QueuePtr1 cFront;
QueuePtr1 cRear;
}LinkQueue1;
//LinkQueue1 chengke; //头结点
//QNode1 * cFront; //队头指针
//QNode1 * cRear; //队尾指针
typedef struct QNode2 //等候候补的客户名单信息
{
char name[20]; //姓名
int shuliang; //定票数量
struct QNode2 *next;
}QNode2,*QueuePtr2;
typedef struct
{
QueuePtr2 hFront;
QueuePtr2 hRear;
}LinkQueue2;
//LinkQueue2 houbu;
//QNode2 * hFront;
//QNode2 * hRear;
typedef struct
{
char end[5]; //终点
char hNUM[8]; //航班号
char pNUM[8]; //飞机号
char time[7]; //星期几
int maxNum; //乘员定额
int yupiaoliang; //剩余票量
LinkQueue1 chengke; //以定票乘客
LinkQueue2 houbu; //候补乘客
}InfoType;
typedef struct //静态链表类型
{
InfoType hangban[PlanNum]; //静态链表,hangban[0]为头结点
int length; //当前表长
}SLList;
SLList plan;
LinkQueue1 createList_c(LinkQueue1 def_chengke)
{
def_chengke.cFront=def_chengke.cRear=(QNode1 *)malloc(sizeof(QNode1 *));
def_chengke.cFront-> next=NULL;
return def_chengke;
}
LinkQueue2 createList_h(LinkQueue2 def_houbu)
{
def_houbu.hFront=def_houbu.hRear=(QNode2 *)malloc(sizeof(QNode2 *));
def_houbu.hFront-> next=NULL;
return def_houbu;
}
void enQueue_c(LinkQueue1 en_chengke,char name[],int Num)
{
QueuePtr1 p=(QNode1 *)malloc(sizeof(QNode1 *));
strcpy(p-> name,name);
//p-> name=name;
p-> cangdeng= 'A ';
p-> shuliang=Num;
p-> next=NULL;
en_chengke.cRear-> next=p;
en_chengke.cRear=p;
}
void enQueue_h(LinkQueue2 en_houbu,char name[],int Num)
{
QueuePtr2 p=(QNode2 *)malloc(sizeof(QNode2 *));
strcpy(p-> name,name);
p-> shuliang=Num;
p-> next=NULL;
en_houbu.hRear-> next=p;
en_houbu.hRear=p;
}
void inithangban() //初始化航班函数
{
strcpy(plan.hangban[0].end, "北京 ");
strcpy(plan.hangban[0].hNUM, "CA1554 ");
strcpy(plan.hangban[0].pNUM, "733 ");
strcpy(plan.hangban[0].time, "星期一 ");
plan.hangban[0].maxNum=100;
plan.hangban[0].yupiaoliang=20;
plan.hangban[0].chengke=createList_c(plan.hangban[0].chengke);
plan.hangban[0].houbu=createList_h(plan.hangban[0].houbu);
strcpy(plan.hangban[1].end, "广州 ");
strcpy(plan.hangban[1].hNUM, "MU5341 ");
strcpy(plan.hangban[1].pNUM, "M90 ");
strcpy(plan.hangban[1].time, "星期天 ");
plan.hangban[1].maxNum=150;
plan.hangban[1].yupiaoliang=0;
plan.hangban[1].chengke=createList_c(plan.hangban[1].chengke);
plan.hangban[1].houbu=createList_h(plan.hangban[1].houbu);
strcpy(plan.hangban[2].end, "深圳 ");
strcpy(plan.hangban[2].hNUM, "CA1554 ");
strcpy(plan.hangban[2].pNUM, "733 ");
strcpy(plan.hangban[2].time, "星期一 ");
plan.hangban[2].maxNum=100;
plan.hangban[2].yupiaoliang=10;
plan.hangban[2].chengke=createList_c(plan.hangban[2].chengke);
plan.hangban[2].houbu=createList_h(plan.hangban[2].houbu);
strcpy(plan.hangban[3].end, "南京 ");
strcpy(plan.hangban[3].hNUM, "CZ3869 ");
strcpy(plan.hangban[3].pNUM, "M90 ");
strcpy(plan.hangban[3].time, "星期四 ");
plan.hangban[3].maxNum=150;
plan.hangban[3].yupiaoliang=20;
plan.hangban[3].chengke=createList_c(plan.hangban[3].chengke);
plan.hangban[3].houbu=createList_h(plan.hangban[3].houbu);
strcpy(plan.hangban[4].end, "北京 ");
strcpy(plan.hangban[4].hNUM, "HU1836 ");
strcpy(plan.hangban[4].pNUM, "738 ");
strcpy(plan.hangban[4].time, "星期五 ");
plan.hangban[4].maxNum=180;
plan.hangban[4].yupiaoliang=50;
plan.hangban[4].chengke=createList_c(plan.hangban[4].chengke);
plan.hangban[4].houbu=createList_h(plan.hangban[4].houbu);
strcpy(plan.hangban[5].end, "厦门 ");
strcpy(plan.hangban[5].hNUM, "CZ3528 ");
strcpy(plan.hangban[5].pNUM, "CRJ ");
strcpy(plan.hangban[5].time, "星期二 ");
plan.hangban[5].maxNum=200;
plan.hangban[5].yupiaoliang=0;
plan.hangban[5].chengke=createList_c(plan.hangban[5].chengke);
plan.hangban[5].houbu=createList_h(plan.hangban[5].houbu);
strcpy(plan.hangban[6].end, "西安 ");
strcpy(plan.hangban[6].hNUM, "MU4594 ");
strcpy(plan.hangban[6].pNUM, "328 ");
strcpy(plan.hangban[6].time, "星期三 ");
plan.hangban[6].maxNum=120;
plan.hangban[6].yupiaoliang=100;
plan.hangban[6].chengke=createList_c(plan.hangban[6].chengke);
plan.hangban[6].houbu=createList_h(plan.hangban[6].houbu);
strcpy(plan.hangban[7].end, "海口 ");
strcpy(plan.hangban[7].hNUM, "SC7425 ");
strcpy(plan.hangban[7].pNUM, "DH4 ");
strcpy(plan.hangban[7].time, "星期一 ");
plan.hangban[7].maxNum=180;
plan.hangban[7].yupiaoliang=30;
plan.hangban[7].chengke=createList_c(plan.hangban[7].chengke);
plan.hangban[7].houbu=createList_h(plan.hangban[7].houbu);
}
[解决办法]
LZ的程序我单步执行了以下,输出结果了:
MU4594 西安 328 星期三 120 100
SC7425 海口 DH4 星期一 180 30
请输入要求查询航班的航班号以及所需定票的数量:
航班号为:CA1554
所需票的数量为:19
航班号 飞机号 时间 剩余票量
CA1554 733 星期一 20
余票量足够,正在为你办理定票手续
请输入你的姓名:
tangzheng
定票成功!
座位号为:
81hdo
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
dhfhe
dfegft
请按任意键继续. . .
[解决办法]
楼主,我帮你调试好了....
程序如下:
#include <iostream.h>
#include <string.h>
#include <iomanip.h>
#include <stdlib.h>
#define PlanNum 8
//预定票人员信息
typedef struct QNode1
{
char name[20]; //姓名
int shuliang; //定票数量
char cangdeng; //票的仓等次
struct QNode1 *next;
}QNode1,*QueuePtr1;
//队列一
typedef struct
{
QueuePtr1 cFront;
QueuePtr1 cRear;
}LinkQueue1;
//等候候补的客户名单信息
typedef struct QNode2
{
char name[20]; //姓名
int shuliang; //定票数量
struct QNode2 *next;
}QNode2,*QueuePtr2;
//队列二
typedef struct
{
QueuePtr2 hFront;
QueuePtr2 hRear;
}LinkQueue2;
//航班信息
typedef struct
{
char end[5]; //终点
char hNUM[8]; //航班号
char pNUM[8]; //飞机号
char time[7]; //星期几
int maxNum; //乘员定额
int yupiaoliang; //剩余票量
LinkQueue1 chengke; //已定票乘客
LinkQueue2 houbu; //候补乘客
}InfoType;
//静态链表类型
typedef struct
{
InfoType hangban[PlanNum]; //静态链表,hangban[0]为头结点
int length; //当前表长
}SLList;
//定义链表
SLList plan;
/////////////////////////////////////////////////
//
LinkQueue1 createList_c(LinkQueue1 def_chengke)
{
def_chengke.cFront = (QNode1 *)malloc(sizeof(QNode1));
def_chengke.cRear = (QNode1 *)malloc(sizeof(QNode1));
//def_chengke.cFront-> next = NULL;
def_chengke.cRear-> next = NULL;
return def_chengke;
}
/////////////////////////////////////////////
//
LinkQueue2 createList_h(LinkQueue2 def_houbu)
{
def_houbu.hFront = (QNode2 *)malloc(sizeof(QNode2));
def_houbu.hRear = (QNode2 *)malloc(sizeof(QNode2));
//def_houbu.hFront-> next = NULL;
def_houbu.hRear-> next = NULL;
return def_houbu;
}
//////////////////////////////////////////////
//
void enQueue_c(LinkQueue1 en_chengke,char *name,int Num)
{
//分配一个结点的空间
QueuePtr1 p=(QNode1 *)malloc(sizeof(QNode1));
if(!p)
exit(0);
//add data
strcpy(p-> name, name);
p-> cangdeng = 'A ';
p-> shuliang = Num;
p-> next = NULL;
en_chengke.cRear-> next = p; //////////
en_chengke.cRear = p;
//en_chengke.cRear-> next = NULL;
}
/////////////////////////////////////////////////////////
//
void enQueue_h(LinkQueue2 en_houbu,char name[],int Num)
{
QueuePtr2 p=(QNode2 *)malloc(sizeof(QNode2));
if(!p)
exit(0);
strcpy(p-> name, name);
p-> shuliang = Num;
p-> next = NULL;
en_houbu.hRear-> next = p;
en_houbu.hRear = p;
}
//////////////////////////////////////////////////////
//初始化航班函数
void inithangban()
{
strcpy(plan.hangban[0].end, "北京 ");
strcpy(plan.hangban[0].hNUM, "CA1554 ");
strcpy(plan.hangban[0].pNUM, "733 ");
strcpy(plan.hangban[0].time, "星期一 ");
plan.hangban[0].maxNum=100;
plan.hangban[0].yupiaoliang=20;
plan.hangban[0].chengke=createList_c(plan.hangban[0].chengke);
plan.hangban[0].houbu=createList_h(plan.hangban[0].houbu);
strcpy(plan.hangban[1].end, "广州 ");
strcpy(plan.hangban[1].hNUM, "MU5341 ");
strcpy(plan.hangban[1].pNUM, "M90 ");
strcpy(plan.hangban[1].time, "星期天 ");
plan.hangban[1].maxNum=150;
plan.hangban[1].yupiaoliang=0;
plan.hangban[1].chengke=createList_c(plan.hangban[1].chengke);
plan.hangban[1].houbu=createList_h(plan.hangban[1].houbu);
strcpy(plan.hangban[2].end, "深圳 ");
strcpy(plan.hangban[2].hNUM, "CA1554 ");
strcpy(plan.hangban[2].pNUM, "733 ");
strcpy(plan.hangban[2].time, "星期一 ");
plan.hangban[2].maxNum=100;
plan.hangban[2].yupiaoliang=10;
plan.hangban[2].chengke=createList_c(plan.hangban[2].chengke);
plan.hangban[2].houbu=createList_h(plan.hangban[2].houbu);
strcpy(plan.hangban[3].end, "南京 ");
strcpy(plan.hangban[3].hNUM, "CZ3869 ");
strcpy(plan.hangban[3].pNUM, "M90 ");
strcpy(plan.hangban[3].time, "星期四 ");
plan.hangban[3].maxNum=150;
plan.hangban[3].yupiaoliang=20;
plan.hangban[3].chengke=createList_c(plan.hangban[3].chengke);
plan.hangban[3].houbu=createList_h(plan.hangban[3].houbu);
strcpy(plan.hangban[4].end, "北京 ");
strcpy(plan.hangban[4].hNUM, "HU1836 ");
strcpy(plan.hangban[4].pNUM, "738 ");
strcpy(plan.hangban[4].time, "星期五 ");
plan.hangban[4].maxNum=180;
plan.hangban[4].yupiaoliang=50;
plan.hangban[4].chengke=createList_c(plan.hangban[4].chengke);
plan.hangban[4].houbu=createList_h(plan.hangban[4].houbu);
strcpy(plan.hangban[5].end, "厦门 ");
strcpy(plan.hangban[5].hNUM, "CZ3528 ");
strcpy(plan.hangban[5].pNUM, "CRJ ");
strcpy(plan.hangban[5].time, "星期二 ");
plan.hangban[5].maxNum=200;
plan.hangban[5].yupiaoliang=0;
plan.hangban[5].chengke=createList_c(plan.hangban[5].chengke);
plan.hangban[5].houbu=createList_h(plan.hangban[5].houbu);
strcpy(plan.hangban[6].end, "西安 ");
strcpy(plan.hangban[6].hNUM, "MU4594 ");
strcpy(plan.hangban[6].pNUM, "328 ");
strcpy(plan.hangban[6].time, "星期三 ");
plan.hangban[6].maxNum=120;
plan.hangban[6].yupiaoliang=100;
plan.hangban[6].chengke=createList_c(plan.hangban[6].chengke);
plan.hangban[6].houbu=createList_h(plan.hangban[6].houbu);
strcpy(plan.hangban[7].end, "海口 ");
strcpy(plan.hangban[7].hNUM, "SC7425 ");
strcpy(plan.hangban[7].pNUM, "DH4 ");
strcpy(plan.hangban[7].time, "星期一 ");
plan.hangban[7].maxNum=180;
plan.hangban[7].yupiaoliang=30;
plan.hangban[7].chengke=createList_c(plan.hangban[7].chengke);
plan.hangban[7].houbu=createList_h(plan.hangban[7].houbu);
}