初学C语言大概两个月,最近开始完成练习“火车票订票系统”,主要为熟悉链表的相关操作及文件相关操作,在这里记录一下。
首先是创建项目,为了后续方便查阅,我把各个模块分别创建了一个.c文件,然后在主函数中以外部函数的方式进行引用
第一步是定义结构体,包含车票相关信息(车次、始发站、终点站、发车时间、到站时间、剩余票数、票价),为方便引用,我把结构体设置为了头文件。
然后就是创建链表:
#pragma warning(disable:4996)
#include<stdio.h>
#include<stdlib.h>
#include"Trainticket.h"
struct Trainticket *pHead = NULL; //链表头结点
struct Trainticket *pEnd = NULL; //链表尾结点
int iCloud = 0; //记录当前车次数量
struct Trainticket *Chuanjian()
{
struct Trainticket *pNew = (struct Trainticket *)malloc(sizeof(struct Trainticket));
int Checishu; //链表长度
printf("请输入本次需要添加的车次数量:\n");
scanf("%d", &Checishu);
printf("请输入车次信息(车次、始发站、终点站、发车时间、到站时间、剩余票数、票价)\n");
while (iCloud < Checishu)
{
struct Trainticket *pNew = (struct Trainticket *)malloc(sizeof(struct Trainticket));
scanf("%s%s%s%s%s%d%d", &pNew->Checi, &pNew->Shifa, &pNew->Zhongdian, &pNew->Facheshijian, &pNew->Daozhanshijian, &pNew->Piaoshu, &pNew->Piaojia);
pNew->pNex = NULL;
iCloud++;
if (iCloud == 1)
{
pHead = pNew;
}
else
{
pEnd->pNex = pNew;
}
pEnd = pNew;
}
return pHead;
}
然后是添加链表成员函数,为方便,创建链表及添加成员函数是在同一个.c文件当中,因此这个文件中我定义了全局变量pHead、pEnd、iCloud。
void ADD(struct Trainticket *pHead) //插入链表成员函数 尾插入
{
struct Trainticket *pAdd = (struct Trainticket *)malloc(sizeof(struct Trainticket));
printf("请输入车次信息(车次、始发站、终点站、发车时间、到站时间、剩余票数、票价)\n");
scanf("%s%s%s%s%s%d%d", &pAdd->Checi, &pAdd->Shifa, &pAdd->Zhongdian, &pAdd->Facheshijian, &pAdd->Daozhanshijian, &pAdd->Piaoshu, &pAdd->Piaojia);
pAdd->pNex = NULL; //pAdd为新增的链表成员
struct Trainticket *pTempA = pHead; //遍历并指向尾节点
while (pTempA != NULL) //循环遍历
{
if (pTempA->pNex == NULL) //判断当前成员是否为尾节点
{
pTempA->pNex = pAdd; //将新增节点地址与当前尾节点连接
pEnd = pAdd; //将新增成员定义为尾节点