数据结构课程设计个人报告.docx

上传人:b****3 文档编号:4006326 上传时间:2022-11-27 格式:DOCX 页数:40 大小:214.38KB
下载 相关 举报
数据结构课程设计个人报告.docx_第1页
第1页 / 共40页
数据结构课程设计个人报告.docx_第2页
第2页 / 共40页
数据结构课程设计个人报告.docx_第3页
第3页 / 共40页
数据结构课程设计个人报告.docx_第4页
第4页 / 共40页
数据结构课程设计个人报告.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

数据结构课程设计个人报告.docx

《数据结构课程设计个人报告.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计个人报告.docx(40页珍藏版)》请在冰豆网上搜索。

数据结构课程设计个人报告.docx

数据结构课程设计个人报告

 

数据结构课程设计

----个人设计报告

 

1课程设计目的...................................................................................2

2课程设计内容和要求.........................................................................2

3任务完成情况....................................................................................2

4设计报告..........................................................................................3

4.1顺序表的应用..............................................................................3

4.1.1设计目的........................................................................................................................3

4.1.2设计内容及要求..................................................................................................................3

4.1.3需求分析........................................................................................................................3

4.1.4概要设计........................................................................................................................4

4.1.5详细代码........................................................................................................................4

4.1.6使用说明........................................................................................................................4

4.1.7测试结果与分析..................................................................................................................5

4.1.8参考文献.........................................................................................................................7

4.2链表的应用……………….................................................................8

4.2.1设计目的..........................................................................................................................8

4.2.2设计内容及要求..................................................................................................................8

4.2.3概要设计..........................................................................................................................9

4.2.4需求分析............................................................................................................................9

4.2.5详细代码..........................................................................................................................9

4.2.6使用说明.........................................................................................................................10

4.2.7测试结果与分析...................................................................................................................11

4.2.8参考文献……………………………………….............................................................12

4.3选做题…………………....................................................................12

4.3.1设计目的.........................................................................................................................12

4.3.2设计内容及要求...................................................................................................................13

4.3.3需求分析..........................................................................................................................13

4.3.5详细代码..........................................................................................................................13

4.3.6使用说明..........................................................................................................................13

4.3.7测试结果与分析....................................................................................................................13

4.3.8参考文献..........................................................................................................................14

5体会与感想..........................................................................................................................14

附录:

..........................................................................................................................................14

附件一顺序表的运用代码..........................................................................................................14

附件二链表的运用代码..............................................................................................................22

附件三选做题代码......................................................................................................................31

 

1课程设计目的

1、学习获取知识的方法;

2、提高发现问题、分析问题和解决实际问题的能力;

3、加强创新意识和创新精神;

4、加强团队的分工与合作;

5、掌握面向实际背景思考问题的方法。

2课程设计内容和要求

内容:

前言

第一章顺序表与链表

第二章栈和队列

第三章树和二叉树

要求:

(1)完成线性结构的设计任务,其中选做题不是必须完成的任务

(2)每人必须在完成个人任务的基础上提交个人任务的设计报告,内容包括:

任务名称、目的、具体内容、需求分析、概要设计、主要代码分析、测试结果、收获与体会。

3任务完成情况

任务完成情况介绍,如表3-1.(仅供参考,请根据实际完成情况填写)

表3-1任务完成情况表

完成任务名称

顺序表的应用

链表的应用

选做题

4设计报告

4.1顺序表的应用

4.1.1设计目的

熟悉线性表的应用,包括线性表的存储结构;向线性表中删除,插入元素;栈的操作,进栈,出栈;队列的操作,循环队列的操作。

增加动手、编程能力。

4.1.2设计内容及要求

(1)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为0(n)、空间复杂度为0

(1)的算法,该算法删除线性表中所有值为item的数据元素。

要求:

线性表元素个数n很大,而值为item的数据元素个数很少,要求移动元素个数尽量少;删除后的数组元素与原数组元素不必保持顺序一致。

(2)编写一个函数将一个顺序表A(有n个元素,且任何元素均不为0)分拆成两个顺序表,使A中大于0的元素存放在B中,小于0的元素存放在C中。

(3)假设一个算术表达式中包含圆括号,方括号和花号三种类型的括号,编写一个判别表达式中括号是否正确配对的函数correct(exp,tag);其中:

exp为字符串类型量,表示被判别的表达式,tag为布尔型的变量。

(4)编写向顺序分配的循环队列QU[0,m-1]中插入一个结点的函数enqueue和从该队列中取出一个节点的dequeue函数。

(5)编写一个主函数,调试上述算法。

4.1.3需求分析

(1)删除所有值为item的数据元素,要使时间复杂度为0(n)、空间复杂度为0

(1)。

(2)对顺序表A输入元素,根据元素的正负对其分组。

(3)使用一个栈st进行判定,将‘(’,‘[’,‘{’入栈,当遇到‘)’,‘]’‘}’时,检查当时栈顶元素是否是对应的‘(’,‘[’,‘{’,若是则退栈,否则返回表示不配对。

当整个算术表达式检查完毕时栈为空,表示括号正确的配对;否则不配对。

(4)在循环队列中,队尾插入结点,并在该队列中取出一个结点

(5)建立工程实现上述函数

4.1.4概要设计

4.1.5详细代码

见附录一。

4.1.6使用说明

建立工程,按线性表运用系统提示进行操作。

4.1.7测试结果与分析

选择1,调试第一个函数。

输入7个数,1,,2,3,4,5,3,7。

选择删除3,程序运行后输出1,2,7,4,5结果正确。

且在程序中采用头尾两个指针(i=1,j=n),从两端向中间移动,凡遇到值item的数据元素时,直接将右端元素左移至值为item的数据元素位置。

保证了程序的效率。

选择2,调试第2个函数。

按照正负,拆分线性表。

输入6个数,1,2,3,-1,-2,-3。

运行后a中存放1,2,3;b中存放-1,-2,-3。

结果正确。

选择3,进行符号配对函数调试。

输入字符表达式:

{[a+[(b-c)]/d];经过运行,结果为:

Match!

,配对。

在设计算法时,使用一个栈st进行判定,将‘(’,‘[’,‘{’入栈,当遇到‘)’,‘]’‘}’时,检查当时栈顶元素是否是对应的‘(’,‘[’,‘{’,若是则退栈,否则返回表示不配对。

当整个算术表达式检查完毕时栈为空,表示括号正确的配对;否则不配对。

选择4,进行第4个函数调试。

选择队列个数:

5;输入队列元素:

1,2,,3,4,5选择y,进入操作,进行入队。

输入要插入的数字:

6。

入队只能在队尾进行插入,插入后的结果为:

1,2,3,4,5,6。

再进行出队操作。

出队只能在对首进行删除,删除1。

删除后的队列为:

2,3,4,5.结果正确。

4.1.8参考文献

[1]严蔚敏等著,数据结构(C语言版),清华大学出版社

4.2链表的应用

4.2.1设计目的

熟悉链表的运用,对单链表,循环链表,进行插入、删除操作。

4.2.2设计内容

(1)假设有两个按元素值递增次序排列的线性表A和B,均以单链表形式存储,里面的大部分元素对应相等,请删除一些元素(A中有而B中没有,或B中有而A中没有),使得两个有序表中保留下来的元素对应相等。

比如,A中元素为(1,3,5,8,10,13,18),B中元素为(1,3,6,8,9,10,13,15),则删除元素后A、B里的元素为(1,3,8,10,13)。

(2)猴子选大王。

n只猴子围成一圈,从1到m报数,报m的猴子出局。

余下的猴子从第m+1只开始继续从1到m报数,报m的猴子出局。

第n只猴子报数后,第1只猴子接着报数(因为围成了圈)。

待整个圈只剩下一只猴子时,该猴子即为大王。

n和m由用户输入,请输出当选大王的猴子的编号。

(3)设有一头指针为L的带有表头结点的非循环双向链表,其每个结点中除有prev(前驱指针),data(数据)和next(后继指针)域外,还有一个访问频度域freq。

在链表被起用前,其值均初始化为零。

每当在链表中进行一次Locate(L,x)运算时,令元素值为x的结点中freq域的值增1,并使此链表中结点保持按访问频度非增(递减)的顺序排列,同时最近访问的结点排在频度相同的结点的最后,以便使频繁访问的结点总是靠近表头。

试编写符合上述要求的Locate(L,x)运算的算法,该运算为函数过程,返回找到结点的地址,类型为指针型。

(4)在主函数中设计一个简单的菜单,分别调试上述算法。

4.2.3概要设计

4.2.4需求分析

(1)将链表A和链表B中互不相等的数删除。

(2)用链表实现约瑟夫循环。

(3)对双向非循环链表进行排序。

4.2.5详细代码

详见附录二。

4.2.6使用说明

运行工程后,出现链表的运用菜单。

如下图所示:

菜单共有四个选项,选择不同的选项会出现相应的提示进行下一步操作:

选择1:

第一小题;

选择2:

第二小题;

选择3:

第三小题。

选择0:

退出;

4.2.7测试结果与分析

选择1,调试第一个函数:

输入A链表:

1,3,5,8,10,,13,18;B链表:

1,3,6,8,9,10,13,15。

经过程序运行后输出A,B的内容为:

1,3,8,10,13。

本程序对A链表进行遍历操作,和B比较,删除A中有而B中没有的元素,得到最A中的元素。

同样对B进行操作,和删除后的A比较,删除多余的元素,即可得最后B中的元素。

选择2,调试第2个函数,输入猴子数目30,再输入报数数目3,经过运行,得出最后的王为16号。

选择3,对函数3进行调式。

输入5个数据:

1,2,3,5,7。

首先访问:

2,根据排序规律,访问后的顺序为:

2,1,,3,5,7;再访问:

5,排序为:

2,5,1,,7。

这是因为:

最近访问的结点排在频度相同的结点的最后。

然后再次访问5,得到:

5,2,1,3,7。

可见程序运行正确。

4.2.8参考文献

[1]严蔚敏等著,数据结构(C语言版),清华大学出版社

4.3链表选作题

4.3.1设计目的

评优标准

4.3.2设计内容及要求

内容:

已知两个单链表A和B分别表示两个集合,其元素递增排列,编写一个函数求出A和B的交集C,要求C同样以元素值递增的单链表形式存储。

4.3.3需求分析

建立两个单链表A,B,将其元素递增排列后,再求出交集C

4.3.5详细代码

详见附录三。

4.3.6使用说明

将A,B的元素分别输入进去,以0结束。

4.3.7测试结果与分析

输入A:

3,10,18,13,5,1,8,0。

输入B:

15,10,6,8,3,1,9,13,0。

输出A和B的交集:

1,3,8,10,13。

设计算法时,交集指的是两个单链表的元素值相同的结点的集合,为了操作方便,先让单链表C带有一个头结点c,最后将其删除掉。

4.3.8参考文献

[1]严蔚敏等著,数据结构(C语言版),清华大学出版社

5体会与感想

(1)这次数据结构的课程设计,使我对线性表和链表的理解加深了很多,通过实验题目的具体运用,有了一个更加清楚的认识和理解。

对书上列出的函数算法,也能够更加深刻的理解它的意义。

(2)在做线性时,主要是用结构体对线形表接点表示;对链表排序时所要考虑到的指针指向,这些操作为什么要按照这个顺序。

考虑是头指针。

(3)这次课程设计,我体会到编程要分段,把问题细画,看到一个题目,要理清大致思路,线性表该如何操作,链表该如何操作。

画出流程图,可以使思路更加清晰。

特别是双向非循环指针,对它排序要执行很多步骤,每次指针要移动多次,运行出来都只知道排序出错。

只有细化,通过流程图。

(4)本次实验采取工程来调试各个函数,学会了建立工程。

对以后编写应用系统有一定帮助。

附录一:

顺序表运代码:

头文件:

head.h

#include

#include

#defineMAXSIZE100

#defineMAX_STACK100

#include

structList

{

intdata[MAXSIZE];

intlength;

};

structstStack

{

charszStack[MAX_STACK];

intnTop;

};

structQueue

{

intp[MAXSIZE];

intfront,rear;

};

voidprogram1_1();

voidprogram1_2();

voidprogram1_3();

voidprogram1_4();

}

Main()函数:

#include

#include

#include"head.h"

intmain()

{

intchoice;

do

{

printf("\n欢迎进入顺序表应用系统\n");

printf("\n-------------------主菜单---------------------\n");

printf("

(1)删除线性表中所有值为item的数据元素...\n");

printf("

(2)将一个顺序表以0为界点分拆成两个顺序表...\n");

printf("(3)一个判别表达式中括号是否正确配对...\n");

printf("(4)向队列插入一个结点和从该队列中取出一个结点...\n");

printf("(0)退出系统...\n");

printf("\n请选择:

");

scanf("%d",&choice);

if(choice<0&&choice>5)continue;

switch(choice)

{

case1:

program1_1();;break;

case2:

program1_2();break;

case3:

program1_3();break;

case4:

program1_4();break;

case0:

exit(0);

default:

break;

}

}while

(1);

return0;

}

program1_1();函数

#include

#include"head.h"

voidprogram1_1()

{

intitem,n,i=0;

printf("请输入一n的值:

\n");

scanf("%d",&n);

printf("请输入n个数:

\n");

int*p=newint[n];//动态开创数组p[n]

for(i=0;i

{

scanf("%d",&p[i]);

}

printf("请输入要删除的数:

\n");

scanf("%d",&item);

for(i=0;i

{

if(p[i]==item)

{

p[i]=p[n-1];

n--;

i--;

}

else

{

continue;

}

}

printf("删除后的结果:

为\n");

for(i=0;i

{

printf("%d",p[i]);

printf("\n");

}

}

program1_2();函数

#include

#include

#include"head.h"

voidprogram1_2()

{

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

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

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