1、单 位: 计算机 051 班 学 号: 课程设计课程设计 (计算机科学与技术专业)(计算机科学与技术专业) 数据结构课程设计数据结构课程设计 姓 名: 专 业: 计算机科学与技术 指导教师: 二八年六月 一一、课程设计课程设计 设计题目:单链表两个集合相加减的算法 为了实现单链表的几种运算功能,需要用到多张函数程序,例如:建表 -readdata(pointer *head),单链表元素排序-sort(pointer *head),输出单 链表 L -disp(pointer *head),求两有序集合的并。两个集合 A 和 B,它们的 并集为集合 C-bing(pointer *head1,
2、pointer *head2, pointer *head3),求 两有序集合的交。两个集合 A 和 B,它们的交集为集合 C- jiao(pointer *head1,pointer *head2, pointer *head3),求两有序集合的差。两个集合 A 和 B,它们的差集为集合 C- cha(pointer *head1,pointer *head2, pointer *head3),首先建立单链表,再调用函数 sort()构成有序单链表,最后求用有序 单链表表示的两个集合的相关运算- main()。首先设计一个含有多个菜单项的 主控菜单程序,然后再为这些菜单项配上相应的功能。 一
3、、主控菜单设计 1)菜单内容 程序运行后,给出 7 个菜单项的内容和输入提示: 1. 集合 1 为 2. 集合 2 为 3. 集合 1 与集合 2 的并为 4. 集合 1 与集合 2 的交为 5. 集合 1 与集合 2 的差为 6. 集合 2 与集合 1 的差为 0退出管理系统 二二、链表介绍链表介绍 1)建立单向链表 在函数中首先为 Head 申请了个所指向的结点, 该结点称为链表的首结点。 开始链表的头指针和尾指针都指向头结点,以后每输入一个数则申请一个结点, 将输入的数放到结点的信息域后。输入结束后,置链表最后一个结点的指针域为 空,返回链表头指针。单向链表中插入结点在单向链表中插入一个
4、结点要引起插 入位置前面结点的指针的变化, 在插入一个结点时首先要由 (new pointer)向系统 申请一个存储 pointer 类型变量的空间,并将该空间的首地址赋给指向新结点的 指针 head,在为该新结点的信息域赋值后,先要将该结点插入位置后面一个结 点的指针赋给该结点的指针域, 然后才能将指向该结点的指针赋给其前一个结点 的指针域,这样来完成插入过程。在单向链表中删除个结点同样要引起删除结点 的前面结点的指针的变化。 2)编历链表 由于链表是一个动态的数据结构,链表的各个结点由指针链接在起,访问链表 元素时通过每个链表结点的指针逐个找到该结点的下一个结点,直找到链表 尾,链表的最后一个结点的指针为空。 3)双向链表 每个结点中只包括一个指向下个结点的指针域,这种链表称为单向链表。如 果要在单向链表一个指针所指的当前位置插入一个新结点, 就必须从链表头指针 开始逐个遍历直到当前指针所指结点的前一结点,修改这个结点的指针。双向链 表的每个结点中包括两个指针域,分别指向该结点的前一个结点和后一个结点。 在双向链表中由任何