1、 数据结构程序设计 模拟排队买票模拟排队买票 一一 目的目的 使用户能够通过本程序实现所需功能,用户可以通过本程序进行模拟排队, 包括入队和出队操作,信息包含在 input.txt 文件中,用户进行的操作结果将保存 在 output.txt 文件中。 二二 需求分析需求分析 1 1、如何存放和查找所有的人员信息如何存放和查找所有的人员信息 用二维数组来存放和查找数据,每个数组元素就存放一个人的信息结构体 Member,包括名字 name,所在朋友组 group,以及编号 idnum,每行的第一个 元素不存放人员信息而存放该朋友组的人数便于以后的遍历。 2 2、如何操作如何操作 EnQueueE
2、nQueue 和和 DeQueueDeQueue 命令命令 关于操作 EnQueue 和 DeQueue 命令,这可以用队列来模拟,由于有插队现 象的存在,不能单纯地用一个数组来表示队列,因为这样的话,插入一个朋友, 则他后面的人都要往后移一个单位,删除一个人,则他后面的人都要前移一个, 这样无论插入还是删除都要移动大量的元素,所以,采用链表的形式,构造链队 列,头结点的指针指向队头元素,尾指针指向队尾元素。 输入 Enqueue 命令,如果队伍里有朋友,则排在朋友后面;如果没有遇到朋 友,则排在队尾。入队时,直接向链队列中插入一个新节点即可。 输入 Dequeue 命令,则根据“先进先出”
3、,按照各个元素和它后继元素的先 后顺序,每次删除队列中的第一个。程序结构如下所示。 for(读测试文件) Switch case 输入 Enqueue: 读入名字; 插入链队列; case 输入 Dequeue: 删除队列的第一个名字; 将该名字输出到文件; 数据结构程序设计 case 结束:break; 窗口结构关系图: Queue: . null QueuePtr front QueuePtr rear 三三 概要设计概要设计 1 1、本程序包含两个模块本程序包含两个模块 (1)主程序模块 main() 定义及初始化; 显示开始菜单界面,让用户选择操作; 进行操作; 关闭文件,结束; (2
4、)函数定义模块 定义初始化,入队,出队操作等 6 个功能函数 void ReadInput(FILE *fin); 将 input 文件中的内容读入到二维数 peo 当中,并附上编号。 Status InitQueue(Queue Que4); 将 input 文件读入到 peo 数组里面去,并进行窗口初始化,随机选一部分人进 行入队,每一个都将按照最佳位置排入队伍。 Status InitEn(Queue Que4,Member a); 将选出来的人进行按最佳位置入队。 Status EnQueue(Queue Que4,FILE *fout); 由用户输入人名,再进行最佳入队操作; Status DeQueue(Queue Que4,int 由用户选择窗口号,删除该窗口的第一个人,进行出队操作; int Check(Queue Que4, char name); 判断用户输入的人名是是否存在或已排入队伍,若存在且未入队则返回他所