ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:115.10KB ,
资源ID:26412704      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26412704.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构大作业封面模板.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构大作业封面模板.docx

1、数据结构大作业封面模板12级 软件设计大作业题 目 概念图 难度系数 0.7 成 绩 班 级 011213 完成者1学 号 01121345 姓 名 杨英杰 完成者2学 号 01121278 姓 名 曹伟 完成者3学 号 01121289 姓 名 赵汉卿 完成日期 2014.6.22 (若是多人合作,填写下面的内容,给出所有合作者的信息)姓名:杨英杰主要完成的工作:线性表、栈和队列、数组和串姓名:曹伟主要完成的工作:图、索引、散列姓名:赵汉卿主要完成的工作:树、绪论、算法设计与分析一、软件系统名称完整线性表输出。二、软件分析与设计1、问题分析:线性表内容包含两部分,分别是字母(表示下个链表)和

2、数字。因此链表中节点需要包含指向下一个节点或下个链表的指针等多个数据类型。系统输入:线性表名称(字母)和线性表内容(数字)。系统输出:线性表(包括线性表名称和线性表内容)。总功能:可在原有链表基础上不断添加数字或新链表,并显示每个链表的内容及整体链表的内容。2、测试样例在程序输入均含有提示,如果输入错误,会导致重新输入,不会直接退出程序。输入包含:输入提示测试样例预期结果请输入需要添加的链表名称(输入END结束)END退出C(已在线性表中的链表字母)显示下个输入Sg或D或12(任何不是线性表字母的输入)输入有误,请重新输入请输入数字或新链表名称(输入end结束)end退出132(数字)或Q(未

3、保存在线性表中的链表字母)显示下个输入Ass或46s(不正常输入)输入有误,请重新输入 3、全局变量包括:所有链表的指针和表示链表指针数目的数字变量;用语构成队列的数组指针和表示表示队列的两个变量front和rear。 4、模块分类创建链表模块函数名称:CreateList函数参数:链表名称name函数功能: 生成链表返回值:链表头指针伪代码描述:定义头指针;分配节点空间;节点数据初始化(链表名=name);返回头指针初始化模块函数名称:InitList函数参数:无函数功能:链表初始化返回值: 无伪代码描述: 在链表中原有链表中插入数字和链表;新链表的插入数字和链表;插入链表模块函数名称:At

4、Last函数参数:链表头指针函数功能: 寻找链表中最后指针返回值:最后指针伪代码描述:While(下一个节点指针不空) 指向下一个节点指针 返回函数名称:InsertNumber函数参数:链表头指针,数字函数功能: 链表中插入数字返回值:新节点指针伪代码描述:寻找最后指针;分配节点空间;节点数据初始化;链表与节点链接返回节点指针函数名称:InsertList函数参数:链表头指针,要插入链表头指针函数功能: 链表中插入指针返回值:新链表头指针伪代码描述:寻找最后指针;分配节点空间;节点数据初始化原链表与节点连接节点与要插入链表头指针链接返回节点指针数组队列模块函数名称:Qinit函数参数:无函数

5、功能: 队列初始化返回值:无伪代码描述: front=rear=0函数名称:push函数参数:指针函数功能: 入队列返回值:无伪代码描述:指针进入数组front+函数名称:pop函数参数:无函数功能: 出队列返回值:无伪代码描述:rear+函数名称:top函数参数:指针函数功能: 返回队列头指针返回值:队列头指针伪代码描述:返回队列头指针函数名称:empty函数参数:无函数功能: 判断队列是否空返回值:bool变量伪代码描述:队列空;返回true;Else 返回false删除模块函数名称:DeleteList函数参数:链表头指针函数功能: 释放线性表空间返回值:无伪代码描述: 队列初始化; 头

6、指针入队列 While(队列不空) 出队列并存储队首值 指向下一个节点 If(节点为数字) 释放空间、else 指针入队列并释放空间显示模块函数名称:Show函数参数:无函数功能: 输出只有数值的完整线性表返回值:无伪代码描述: 显示线性表字母 输出函数 换行函数名称:ShowL函数参数:指针函数功能: 输出链表内容返回值:无伪代码描述: 指向下一个节点 If(节点为数字) 输出数字else 递归调用函数,传递此节点指针函数名称:ShowList函数参数:指针函数功能: 输出线性表内容返回值:无伪代码描述: 队列初始化; 头指针入队列 While(队列不空) 出队列并存储队首值显示链表头字母

7、指向下一个节点 If(节点为链表节点) 显示链表头字母和, 入队列else 显示数字和,输入模块函数名称:NoCreate函数参数:链表名称name函数功能: 判断队列是否存在于线性表返回值:bool量伪代码描述: 数组中依次寻找 If找到 false 无 返回true函数名称:Input函数参数:无函数功能: 输入处理返回值:无伪代码描述: ShowList 输出提示输入(为字符串)While(输入不结束) If(输入合理(为单一字母且已存在线性表) 找到线性表中的该链表 输出提示输入(为字符串)While(输入不结束) If(输入为新单一字母) 新建链表并插入,并存储如全局数组中Else

8、if(为数字) 字符串转化为数字并加入原链表中Else提示输入错误提示并重新输入Else 提示输入错误提示并重新输入 5、流程图三、运行环境 codeblocks(建议编译器为gcc)。四、软件使用说明 软件系统输入以输出和异常处理均在上述表格中得到。五、源代码 #include#include#include#includeusing namespace std;typedef struct node bool isList; int number; node *nextNumber,*nextList; char listName;List;typedef struct nodeh cha

9、r name; List *head;HList;HList ListHead100;int Nlisthead=0;List *CreateList(char name);List *AtLast(List *head);List *InsertNumber(List *head,int number);List *InsertList(List *head1,List *head2);void InitList(List *head);void ShowList(List *head);void DeleteList(List *head);void Input();bool NoCrea

10、te(char name);void Show();int main() List *head=CreateList(A); InitList(head); Input(); Show(); DeleteList(head); return 0;List *CreateList(char name) List *head; head=(List *)malloc(sizeof(List); head-listName=name; head-isList=true; head-nextNumber=head-nextList=NULL; return head;List *AtLast(List

11、 *head) while(head-nextNumber) head=head-nextNumber; return head;List *InsertNumber(List *head,int number) head=AtLast(head); List *newNode=(List *)malloc(sizeof(List); newNode-isList=false; newNode-number=number; newNode-nextList=newNode-nextNumber=NULL; head-nextNumber=newNode; return newNode;List

12、 *InsertList(List *head1,List *head2) head1=AtLast(head1); List *newNode=(List *)malloc(sizeof(List); newNode-isList=true; newNode-listName=head2-listName; newNode-nextNumber=NULL; newNode-nextList=head2; head1-nextNumber=newNode; return head2;void InitList(List *head) /A链表初始化 InsertNumber(head,1);

13、InsertNumber(head,2); InsertNumber(head,3); InsertNumber(head,4); InsertNumber(head,5); List *head1=CreateList(B); InsertList(head,head1); /B链表初始化 InsertNumber(head1,7); InsertNumber(head1,8); InsertNumber(head1,9); List *head2=CreateList(C); InsertList(head1,head2); /C链表初始化 InsertNumber(head2,10);

14、/存储所有链表头指针 ListHead0.head=head; ListHead1.head=head1; ListHead2.head=head2; ListHead0.name=A; ListHead1.name=B; ListHead2.name=C; Nlisthead=3;/队列定义及所有操作 const int MAXQ=10000;List * ListQueueMAXQ; int front,rear;/初始化 (队列清空) void Qinit() front=rear=0;/入队列 void push(List *head) if(frontMAXQ) ListQueuef

15、ront+=head;/出队列 void pop() rear+;/返回队首元素 List *top() if(rear,temp-listName); temp=temp-nextNumber; while(temp) if(temp-isList) printf(%c,temp-listName); push(temp-nextList); if(temp-nextNumber) printf(,); else printf(%d,temp-number); if(temp-nextNumber) printf(,); temp=temp-nextNumber; printf(n); /判

16、断一个链表名称是否已被创建 bool NoCreate(char name) for(int i=0;i=A&temp10=Z&!temp11) for(int i=0;i=A&temp20=0&temp2jnextNumber; while(temp1) if(temp1-isList) push(temp1-nextList); temp2=temp1-nextNumber; free(temp1); temp1=temp2; void ShowL(List *head) List *temp=head-nextNumber; while(temp) if(temp-isList) ShowL(temp-nextList); else printf(%d ,temp-number); temp=temp-nextNumber; void Show() List *head=ListHead0.head; printf(%c-,ListHead0.name); ShowL(head); puts();六、测试 七、对算法的时间效率进行分析在程序中,队列操作时间复杂度均为O(1),而线性表的基本操作:删除,显示,检查,查找链表的时间复杂度均为O(n)。八、收获、体会、对课程的意见或建议。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1