C++程序设计:函数编程题 - 工作备忘录生成与冲突处理

版权申诉
0 下载量 113 浏览量 更新于2024-06-26 收藏 360KB PDF 举报
在C++程序设计的第一章中,涉及了一个关于工作备忘录生成的编程题目,主要目标是根据工作记录数据结构实现一个功能。题目要求你创建一个程序,处理用户输入的工作任务列表,其中每个任务包括工作名称、开始时间和结束时间。任务需按照开始时间排序,并检测是否存在冲突(即在同一时间段内有多项工作)。如果有冲突,应在冲突的工作名称前添加星号(*)。 函数接口部分: 1. `Node* add(Node*, Node*)`: 这是一个链表操作函数,用于将新任务添加到已有的工作列表中。它接受两个Node指针作为参数,一个是当前节点,另一个是要插入的新节点。这个函数应该考虑链表的结构,确保新任务被正确插入到链表的相应位置。 2. `void display(Node*)`: 这个函数用于遍历并打印工作列表,展示所有任务及其开始和结束时间。在输出时,它会调用`check()`函数来检查冲突情况。 3. `bool check(Node*)`: 这个辅助函数用于判断工作列表中的冲突。它采用递归方式,检查当前节点和下一个节点的时间关系。如果当前节点的开始时间大于下一个节点的开始时间,则返回`false`,表示存在冲突。如果链表为空或只有一个节点,或者没有冲突,返回`true`。 主程序部分: - 用户首先输入工作记录的数量,即任务的数量。 - 接着,循环读取每项任务的信息,包括名称、开始时间和结束时间,然后将这些信息封装成`Node`对象,并将其添加到链表的头部。 - 使用`check()`函数检查链表是否包含冲突。如果有冲突,输出错误信息"ERROR"。 - 最后,调用`display()`函数显示完整的工作备忘录,包括有冲突的任务。 输入示例: 输入四个任务: - aaa,开始时间1920,结束时间2000 - ccc,开始时间1692,结束时间2000 - ddd,开始时间1531,结束时间1700 - bbb,开始时间无冲突 输出结果会按照开始时间顺序展示,如果有冲突,如bbb与ccc,输出格式为`*bbb 开始时间 结束时间`,以此类推。 通过这个题目,学生可以复习C++中的链表操作,时间复杂度分析,以及条件判断和递归等概念,并熟悉如何处理和展示数据结构中的冲突问题。
2023-02-27 上传