版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计报告目录 TOC o 1-3 h z u HYPERLINK l _Toc281126496 第一章 设计目的 PAGEREF _Toc281126496 h 3 HYPERLINK l _Toc281126497 第二章 设计任务及要求 PAGEREF _Toc281126497 h 3 HYPERLINK l _Toc281126498 一、基本要求 PAGEREF _Toc281126498 h 3 HYPERLINK l _Toc281126499 二、内容 PAGEREF _Toc281126499 h 3 HYPERLINK l _Toc281126500 第三章
2、题目分析与解答 PAGEREF _Toc281126500 h 4 HYPERLINK l _Toc281126501 一、仓库管理系统 PAGEREF _Toc281126501 h 4 HYPERLINK l _Toc281126502 1.题目要求 PAGEREF _Toc281126502 h 4 HYPERLINK l _Toc281126503 2.应用程序功能 PAGEREF _Toc281126503 h 4 HYPERLINK l _Toc281126504 3.输入数据类型、格式和内容限制 PAGEREF _Toc281126504 h 6 HYPERLINK l _Toc
3、281126505 4.主要模块的算法描述 PAGEREF _Toc281126505 h 6 HYPERLINK l _Toc281126506 5.源程序代码 PAGEREF _Toc281126506 h 7 HYPERLINK l _Toc281126507 二、通讯录管理系统 PAGEREF _Toc281126507 h 13 HYPERLINK l _Toc281126508 1.题目要求 PAGEREF _Toc281126508 h 13 HYPERLINK l _Toc281126509 2.应用程序功能 PAGEREF _Toc281126509 h 13 HYPERLI
4、NK l _Toc281126510 3.输入数据类型、格式和内容限制 PAGEREF _Toc281126510 h 15 HYPERLINK l _Toc281126511 4.主要算法模块描述 PAGEREF _Toc281126511 h 16 HYPERLINK l _Toc281126512 5.源程序代码 PAGEREF _Toc281126512 h 16 HYPERLINK l _Toc281126513 三、猴子选大王 PAGEREF _Toc281126513 h 22 HYPERLINK l _Toc281126514 1.题目要求: PAGEREF _Toc28112
5、6514 h 22 HYPERLINK l _Toc281126515 2.应用程序功能 PAGEREF _Toc281126515 h 22 HYPERLINK l _Toc281126516 3.输入数据类型、格式和内容限制 PAGEREF _Toc281126516 h 23 HYPERLINK l _Toc281126517 4.主要算法模块描述 PAGEREF _Toc281126517 h 23 HYPERLINK l _Toc281126518 5.源程序代码 PAGEREF _Toc281126518 h 23 HYPERLINK l _Toc281126519 四、二叉树运算
6、2 PAGEREF _Toc281126519 h 26 HYPERLINK l _Toc281126520 1.题目要求 PAGEREF _Toc281126520 h 26 HYPERLINK l _Toc281126521 2.应用程序功能 PAGEREF _Toc281126521 h 26 HYPERLINK l _Toc281126522 3.输入数据类型、格式和内容限制 PAGEREF _Toc281126522 h 26 HYPERLINK l _Toc281126523 4.主要算法模块描述 PAGEREF _Toc281126523 h 26 HYPERLINK l _To
7、c281126524 5.源程序代码 PAGEREF _Toc281126524 h 28第一章 设计目的一、培养学生运用算法与数据结构的基本知识解决实际编程中的数据结构设计和算法设计问题。二、培养学生独立设计程序与解决问题的能力,培养学生团队协作集成程序模块及调试能力。三、培养学生初步的软件设计及软件测试的能力。第二章 设计任务及要求基本要求学生必须仔细阅读数据结构课程设计指导书,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通。学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报。课程设计按照教学要求需要一
8、周时间完成,一周中每天(按每周5天)至少要上3-4小时的机来调试C语言设计的程序,总共至少要上机调试程序15小时。根据设计报告要求编写设计报告,主要内容包括目的、意义、原理和实现方法简介、过程分析及说明、实验结果情况说明、结论。每个人必须有可运行的程序,学生能对自己的程序面对教师提问并能熟练地解释清楚,学生回答的问题和程序运行的结果作为评分的主要衡量标准。 内容本次课程设计完成如下模块:仓库管理系统、通讯录管理系统、猴子选大王及二叉树运算2。第三章 题目分析与解答仓库管理系统题目要求设计一个仓库管理系统,可以按照顺序和货物名称查询仓库的存储情也可以增加或删除货物。struct node cha
9、r NO; /商品编号 char namemax; /商品名称 char count; /商品数量;应用程序功能开始运行时界面如下: 仓库管理链表建立界面如下:仓库管理链表插入界面如下:仓库管理链表查询界面如下:按商品编号查询界面如下:按商品名称查询界面如下:仓库管理链表删除界面如下:仓库管理链表输出界面如下:输入数据类型、格式和内容限制输入数据类型为字符型,但在输入过程中不可出现空格,如在输入商品名称时不可出现空格。主要模块的算法描述流程图:源程序代码#include #includeiostreamint flag1=0;#include string.h#include stdlib.h
10、#include windows.husing namespace std;typedef struct /仓库管理结点类型 char NO10; /商品编号 char name30; /商品名称 char count5; /商品数量 DataType;typedef struct node /结点类型定义 DataType data; /结点数据域 struct node *next; /结点指针域 ListNode;typedef ListNode *LinkList;LinkList head;ListNode *p;LinkList CreateList(void);void Inse
11、rtNode(LinkList head,ListNode *p);ListNode *ListFind(LinkList head);void DelNode(LinkList head);void PrintList(LinkList head);/*尾插法建立带头结点的仓库管理链表算法*/LinkList CreateList(void)LinkList head=(ListNode *)malloc(sizeof(ListNode); /申请头结点ListNode *p,*rear;char flag=y;/int flag=0; /结束标志置0rear=head; /尾指针初始指向头
12、结点while (flag=y) p=(ListNode *)malloc(sizeof(ListNode); /申新结点printf( 商品编号(10) 商品名称(30) 商品数量(5) n);printf(n);printf(n添加商品编号:n);cinp-data.NO;printf(n添加商品名称:n);;printf(n添加商品数量:n);cinp-data.count;rear-next=p; /新结点连接到尾结点之后rear=p; /尾指针指向新结点printf(继续添加记录?(y/n):);cinflag;rear-next=NULL; /终端结点指
13、针置空return head; /返回链表头指针/*在仓库管理链表head中插入结点*/void InsertNode(LinkList head,ListNode *p) ListNode *p1,*p2; p1=head; p2=p1-next; while(p2!=NULL & strcmp(p2-data.NO,p-data.NO)next; /p2指向表的下一个结点 p1-next=p; /插入p所指向的结点 p-next=p2; /连接表中剩余的结点 /*有序仓库管理链表的查找 */ListNode *ListFind(LinkList head) ListNode *p; cha
14、r num10; char name9;char pp; printf(=n); printf( a. 按商品编号查询 n); printf( b. 按商品名称查询 n); printf(=n); printf( 请 选 择: ); p=head-next; cinpp;getchar(); if (pp=a|pp=A) printf(请输入要查找的商品编号:);cinnum;while (p&strcmp(p-data.NO,num)next;if (p=NULL)|strcmp(p-data.NO,num)0)p=NULL; /没有查到要查找的通讯信息elseif (pp=b|pp=B)
15、printf( 请输入要查找的商品名称:);cinname;while(p&strcmp(,name)!=0)p=p-next; return p; /*仓库管理链表上的结点删除*/void DelNode(LinkList head)char jx;ListNode *p,*q; p=ListFind(head); /调用查找函数if (p=NULL) printf(没有查到要删除的商品信息!n);return; if(p!=NULL)printf(真的要删除该商品吗?(y/n):);cinjx;if (jx=y|jx=Y) q=head;while (q!=NULL)
16、&(q-next!=p)q=q-next;q-next=p-next; /删除结点free(p); /释放被删结点空间printf(删除成功!n); /*仓库管理链表的输出函数 */void PrintList(LinkList head)ListNode *p;p=head-next;printf( 商品编号 商品名称 商品数量 n);printf(n);while (p!=NULL) printf(%15s%20s%23sn,p-data.NO,,p-data.count);printf(n);p=p-next; /后移一个结点void main()int choic
17、e,j=1;char Choice;while(j)printf(nnnnn);printf(tttt仓库管理系统n);printf(nttt*);printf(nttt* 1 仓库管理链表建立 *);printf(nttt* 2 仓库管理链表插入 *);printf(nttt* 3 仓库管理链表查询 *);printf(nttt* 4 仓库管理链表删除 *);printf(nttt* 5 仓库管理链表输出 *);printf(nttt* 0 退出仓库管理系统 *);printf(nttt*);printf(nttt请选择菜单号(0-5):);cinchoice;getchar();switc
18、h(choice)case 1:printf(*n);printf(* 仓库管理链表建立 *n);printf(*n);head=CreateList( );flag1=1;system(cls);break;case 2:if(flag1!=1) printf(请先建立表!);Sleep(1500);printf(*n);printf(* 仓库管理链表插入 *n);printf(*n);printf(商品编号(10) 商品名称(30) 商品数量n);printf(* n);p=(ListNode *)malloc(sizeof(ListNode); /申请新结点printf(n添加商品编号:
19、n);cinp-data.NO;printf(n添加商品名称:n);;printf(n添加商品数量:n);cinp-data.count;InsertNode(head,p);system(cls);break;case 3:if(flag1!=1) printf(请先建立表!);Sleep(1500);elseprintf(*n);printf(* 仓库管理链表查询 *n);printf(*n);p=ListFind(head);if (p!=NULL) printf(商品编号 商品名称 商品数量 n);printf(n);printf(%s,%s,%sn,p-d
20、ata.NO,,p-data.count);printf(n);else printf(没有查到要查询的商品信息!n);break;case 4: if(flag1!=1) printf(请先建立表!);Sleep(1500);elseprintf(*n);printf(* 仓库管理链表删除 *n);printf(*n);DelNode(head); /删除结点break;case 5:if(flag1!=1) printf(请先建立表!);Sleep(1500);elseprintf(*n);printf(* 仓库管理链表输出 *n);printf(*n);PrintL
21、ist(head);break;case 0:j=0;system(cls);break;default:printf(ttn 输入有错,请重新输入!n);Sleep(1500);system(cls);break;通讯录管理系统题目要求通讯录一般包括通讯者的编号、姓名、性别、电话及地址等信息,设计一个通讯录要求实现通讯者的插入、查询、删除、更新、排序操作。 struct node char num5; /编号 char name8; /姓名 char sex; /性别 char tel8; /电话 char address100; /地址;应用程序功能开始运行时界面如下:通讯录链表建立界面如
22、下:通讯录链表插入界面如下:通讯录链表查询界面如下: 按编号查询界面如下:按姓名查询编号如下: 通讯录链表删除界面如下: 通讯录链表输出界面如下:输入数据类型、格式和内容限制输入数据类型为字符型,但在输入过程中不可包含空格,如输入地址过程中不可出现空格!主要算法模块描述流程图:源程序代码#include #include iostreamint flag1=0;#include string.h#include stdlib.h#include windows.husing namespace std;typedef struct /通讯录结点类型 char num5; /编号 char na
23、me9; /姓名 char sex3; /性别 char phone13; /电话 char addr31; /地址 DataType;typedef struct node /结点类型定义 DataType data; /结点数据域 struct node *next; /结点指针域 ListNode;typedef ListNode *LinkList;LinkList head;ListNode *p;LinkList CreateList(void);void InsertNode(LinkList head,ListNode *p);ListNode *ListFind(LinkLi
24、st head);void DelNode(LinkList head);void PrintList(LinkList head);/*尾插法建立带头结点的通讯录链表算法*/LinkList CreateList(void)LinkList head=(ListNode *)malloc(sizeof(ListNode); /申请头结点ListNode *p,*rear;char flag=y;/int flag=0; /结束标志置0rear=head; /尾指针初始指向头结点while (flag=y) p=(ListNode *)malloc(sizeof(ListNode); /申新结
25、点printf(编号(4) 姓名(8) 性别 电话(11) 地址(31)n);printf(n);printf(n添加的编号:n);cinp-data.num;printf(n添加的姓名:n);;printf(n性别:n);cinp-data.sex;printf(n电话:n);cinp-data.phone;printf(n地址:n);cinp-data.addr;rear-next=p; /新结点连接到尾结点之后rear=p; /尾指针指向新结点printf(继续建表?(y/n):);cinflag;rear-next=NULL; /终端结点指针置空return
26、 head; /返回链表头指针/*在通讯录链表head中插入结点*/void InsertNode(LinkList head,ListNode *p) ListNode *p1,*p2; p1=head; p2=p1-next; while(p2!=NULL & strcmp(p2-data.num,p-data.num)next; /p2指向表的下一个结点 p1-next=p; /插入p所指向的结点 p-next=p2; /连接表中剩余的结点 /*有序通讯录链表的查找 */ListNode *ListFind(LinkList head) ListNode *p; char num5; c
27、har name9;char pp; printf(=n); printf( a. 按编号查询 n); printf( b. 按姓名查询 n); printf(=n); printf( 请 选 择: ); p=head-next; cinpp; if (pp=a|pp=A) printf(请输入要查找者的编号:);cinnum;while (p&strcmp(p-data.num,num)next;if (p=NULL)|strcmp(p-data.num,num)0)p=NULL; /没有查到要查找的通讯信息elseif (pp=b|pp=B) printf( 请输入要查找者的姓名:);ci
28、nname;while(p&strcmp(,name)!=0)p=p-next; return p; /*通讯录链表上的结点删除*/void DelNode(LinkList head)char cho;ListNode *p,*q; p=ListFind(head); /调用查找函数if (p=NULL) printf(没有查到要删除的通讯者!n);return; else if(p!=NULL)printf(真的要删除该结点吗?(y/n));cincho;if (cho=y|cho=Y) q=head;while (q!=NULL)&(q-next!=p)q=q-ne
29、xt;q-next=p-next; /删除结点free(p); /释放被删结点空间printf(删除成功!n); /*通讯录链表的输出函数 */void PrintList(LinkList head)ListNode *p;p=head-next;printf(编号 姓 名 性别 联系电话 地址 n);printf(n);while (p!=NULL) printf(%s,%s,%s,%s,%sn,p-data.num,,p-data.sex,p-data.phone,p-data.addr);printf(n);p=p-next; /后移一个结点void main()
30、int choice,j=1;while(j)printf(nnnnn);printf(tttt通 信 录 链 表 n);printf(nttt*);printf(nttt* 1 通信录链表建立 *);printf(nttt* 2 通信录链表插入 *);printf(nttt* 3 通信录链表查询 *);printf(nttt* 4 通信录链表删除 *);printf(nttt* 5 通信录链表输出 *);printf(nttt* 0 退出管理系统 *);printf(nttt*);printf(nttt请选择菜单号(0-5):);cinchoice;getchar();switch(choi
31、ce)case 1:printf(*n);printf(* 通 讯 录 链 表 的 建 立 *n);printf(*n);head=CreateList( );flag1=1;system(cls);break;case 2:if(flag1!=1) printf(请先建立表!);Sleep(1500); system(cls);printf(*n);printf(* 通 讯 者 信 息 的 添 加 *n);printf(*n);printf(编号(4) 姓名(8) 性别(3) 电话(11) 地址(31)n);printf(* n);p=(ListNode *)malloc(sizeof(Li
32、stNode); /申请新结点printf(n添加的编号:n);cinp-data.num;printf(n添加的姓名:n);;printf(n性别:n);cinp-data.sex;printf(n电话:n);cinp-data.phone;printf(n地址:n);cinp-data.addr;InsertNode(head,p);system(cls);break;case 3:if(flag1!=1) printf(请先建立表!);Sleep(1500);system(cls);elseprintf(*n);printf(* 通 讯 录 信 息 的 查 询
33、 *n);printf(*n);p=ListFind(head);if (p!=NULL) printf(编号 姓 名 性别 联系电话 地址 n);printf(n);printf(%s,%s,%s,%s,%sn,p-data.num,,p-data.sex,p-data.phone,p-data.addr);printf(n);else printf(没有查到要查询的通讯者!n);break;case 4: if(flag1!=1) printf(请先建立表!);Sleep(1500);elseprintf(*n);printf(* 通 讯 录 信 息 的 删 除 *n
34、);printf(*n);DelNode(head); /删除结点break;case 5:if(flag1!=1) printf(请先建立表!);Sleep(1500);elseprintf(*n);printf(* 通 讯 录 链 表 的 输 出 *n);printf(*n);PrintList(head);break;case 0:j=0;system(cls);break;default:printf(ttn 输入有错,请重新输入!n);Sleep(1500);system(cls);break;猴子选大王题目要求:任务:一堆猴子都有编号,编号是1,2,3 .m ,这群猴子(m个)按照
35、1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。要求:输入数据:输入m,n m,n 为整数,nnext=NULL;for(i=1;idata=i;p-next=q;p=q;p-next=NULL;return head;/返回链表头指针/*打印链表*/void printlist(Linklist head)p=head-next;while(p)/打印链表直至链表结尾coutdatanext;/*删除被选到的猴子*/void Delete(ListNode *b,ListNode *pb)/*pb为删除结点的前驱
36、*/pb-next=b-next;free(b);/*猴子选大王(数n个)*/int King(Linklist head,int n,int i)int j,k;ListNode *pp,*t; /*删除节点前驱*/p=head;if(i=1)return i;while(i!=1)for(j=0;jnext;if(!p)p=head-next;if(!p-next)t=head;/当删除的结点为最后一个结点时,t指向头结点elset=pp;Delete(p,pp);p=t;i-;k=pp-data;/将最后一只猴子的编号赋值给kreturn k;/返回最后一只猴子编号void main()
37、int i,c,k,flag=0;cout请输入猴子数量i;cout将猴子顺序编号endl;printlist(Create(i);/调用将猴子顺序编号的函数coutendl编号结束endl;while(!flag)cout第几个猴子离开?c;if(ci)cout输入数量大于猴子数量,请重新输入endl;if(ci|c=i) flag=1;k=King(head,c,i);/调用猴子先大王函数cout大王编号为 kendl;二叉树运算2题目要求设计一个算法,把二叉树的叶子结点按从左到右的顺序连成一个单链表。二叉树用二叉链存储,链接时用叶子结点的rchild 域存放指针。应用程序功能程序运行结果
38、如下:输入数据类型、格式和内容限制输入数据为整型,切勿输入整型以外数据类型,否则程序将进入循环。主要算法模块描述流程图:源程序代码 /*创建二叉树时以输入-9999为结束标志*/#include #include #include using namespace std;#define max 50typedef struct liuyuint data;struct liuyu *lchild,*rchild;/定义结点的左、右指针test;liuyu *root,*p,*qmax,*head,*first;int sum=0;int m=sizeof(test); /*生成二叉排序数*/void insert_data(int x) liuyu *p,*q,*s;s=(test*)malloc(m);s-data=x;s-lchild=NULL;s-rchild=NULL;if(!root)root=s; p=root; while(p) /*如何接入二叉排序树的适当位置*/q=p;if(p-dat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年云南省文山壮族苗族自治州单招职业适应性测试题库及1套参考答案详解
- 2026年上海健康医学院单招综合素质考试题库含答案详解(研优卷)
- 2026年上海政法学院单招职业适应性考试题库附参考答案详解(研优卷)
- 2026年上海师范大学单招职业技能考试题库附参考答案详解(a卷)
- 2026年仙桃职业学院单招职业适应性测试题库及答案详解参考
- 2026年云南省曲靖市单招职业适应性考试题库附参考答案详解(考试直接用)
- 2026年云南水利水电职业学院单招职业技能测试题库附答案详解(研优卷)
- 2026年中国计量大学单招职业倾向性考试题库附答案详解(综合题)
- 2026年万博科技职业学院单招职业适应性测试题库含答案详解(突破训练)
- 2026年七台河职业学院单招职业适应性考试题库带答案详解(综合卷)
- 2026年江西电力职业技术学院单招职业技能考试备考题库带答案解析
- 毛霉菌鼻窦炎护理
- 液压与气动应用技术(第3版)课件 任务5-2汽车起重机支腿的控制回路的设计与应用
- 2025年国企招聘考试(纪检)综合能力测试题及答案
- 妇科用药专业知识培训课件
- 海关面试题目解析及答案
- 体育场馆方案汇报
- 数电发票管理办法
- 2025年苏州市中考物理试卷真题(含答案)
- 中医的睡眠养生法详解
- 大学生爱国教育十讲知到智慧树章节测试课后答案2024年秋中国海洋大学
评论
0/150
提交评论