c++单向链表的排序.docx

上传人:b****8 文档编号:29078399 上传时间:2023-07-20 格式:DOCX 页数:18 大小:274.91KB
下载 相关 举报
c++单向链表的排序.docx_第1页
第1页 / 共18页
c++单向链表的排序.docx_第2页
第2页 / 共18页
c++单向链表的排序.docx_第3页
第3页 / 共18页
c++单向链表的排序.docx_第4页
第4页 / 共18页
c++单向链表的排序.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

c++单向链表的排序.docx

《c++单向链表的排序.docx》由会员分享,可在线阅读,更多相关《c++单向链表的排序.docx(18页珍藏版)》请在冰豆网上搜索。

c++单向链表的排序.docx

c++单向链表的排序

河北联合大学

2011-2012第2学期

《软件设计基础-C++》

课程设计报告

设计名称:

设计一个处理单向链表的程序:

链表的排序

姓名:

王学增学号:

201005100206

专业班级:

土木工程1班

学院:

建筑工程学院

设计时间:

2012-5-31

设计地点:

机房

 

指导教师评语:

 

自评成绩;75

教师评定:

 

指导教师签字:

年月日

年月日

目录

1.课程设计目的

2.课程设计任务与要求

3.课程设计说明书

4.课程设计成果

5.程序调试过程

6.设计问题的不足和改进方案

7.课程设计心得

8.参考文献

1.课程设计目的

 

《软件设计基础-C++》课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C++的知识点,又接近工程实际需要。

目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C++这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。

 

2.课程设计任务与要求:

要求:

本次课程设计利用《软件设计基础-C++》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。

要求:

1、对系统进行功能需求分析

2、设计合理的数据结构和系统框架

3、编程简练,程序功能齐全,能正确运行

4、说明书、流程图要清楚

5、课题完成后必须按要求提交课程设计报告

任务:

将自己选择题目的任务要求简单填写在此处。

(1)要求用C++的思想来完成程序的设计。

(2)各个功能分别使用函数来完成,主函数和各个函数分别存放在不同的.cpp文件中,要求使用头文件。

(3)在基本要求达到后,进行创新设计,例如:

将两个非递减的链表合并成一个新的非递减的链表

3.课程设计说明书

概要设计

主要写模块说明,模块结构图,系统流程图(例N-S流程图)(五号,宋体)

模块说明:

在我设计的程序中一共包括了六个模块,分别是:

新增模块、查找模块、修改模块、完全打印模块、删除模块、退出系统模块。

这六个模块中新增、查找和修改都是独立分开作为子函数的,另外三个则是作为switch语句中的一部分,通过switch语句,把六大模块联系了起来,同时,为了实现多次使用这六大模块,就在switch语句外加了while循环。

我的程序模块说明:

在我设计的程序中一共可以分成三个模块,分别是数据打印模块,冒泡排序模块,主函数模块。

其中,数据打印模块和冒泡排序模块都采用了for循环。

并且这两个模块都是

模块结构图:

 

详细设计

总体流程图:

 

各功能模块流程图

(1)打印数据的流程图:

(以下是应用的for循环)

 

 

 

 

(接上页)

 

(2)泡沫排序的流程图

 

 

注:

上述数组d为r[j].score

(3)主函数流程图

 

4.课程设计成果

程序源代码,运行结果(可用屏幕抓图的方法说明)(五号,宋体)(多页)

(1)链表排序的源代码

#include

#include//头文件

#defineN100

typedefintkeytype;

typedefcharxingming[5];

typedefcharxingbie[5];

typedefstructnum//建立

{

keytypescore;

xingmingname;

xingbiesex;

}numpx[N];

structnumsqlist[N+1];

 

voidpx(numpxr,intn)//冒泡排序

{

inti,j;

for(i=1;i

{

for(j=1;j<=n-i;j++)

{

if(r[j].score>r[j+1].score)

{

r[0]=r[j];

r[j]=r[j+1];

r[j+1]=r[0];

}

}

}

}

 

voidprint(numpxlist,intn)//打印数据

{

inti;

for(i=1;i<=n;i++)

{

cout<<""<

}

cout<<"\n";

for(i=1;i<=n;i++)

{

cout<<""<

}

cout<<"\n";

for(i=1;i<=n;i++)

{

cout<<""<

}

cout<<"\n";

}

 

voidmain()//主函数

{

intn=10;

numpxa={0,"","",16,"小斯","男",24,"伊娃","女",13,"韦德","男",35,"杜兰","男",20,"阿伦","男",37,"李娜","女",55,"凯文","男",11,"罗斯","男",18,"波什","男",10,"刘兰","女"};

cout<<"\n";

cout<<"原系列数据:

\n";

print(a,10);

cout<<"\n";

px(a,n);

cout<<"排序的序列(从低到高):

\n";

print(a,n);

}

 

(2)运行以上源程序后的运行结果:

 

5.程序调试过程

写出程序调试步骤,及遇到的问题。

(1)这时程序已经可以运行,但数据出现错误:

没有输出第一组数。

 

这是字符数组那块的知识,在数据前加上“0,"","",”即可是程序完整显示。

 

(2)可以看出数据还是极不规范,需要对数据进行换行

需要在数据打印模块中每一个for循环后加cout<<"\n";

调试后的结果为:

 

(3)下面对每组数据的间隔进行处理

将语句cout<

调试后的程序:

 

再改进一下间距:

 

(4)调试到现在程序已经大概完成,为与结果一样,需要在主函数中,print(a,10);后加上cout<<"\n";

得到下面程序:

 

6.设计问题的不足和改进方案

我认为这个程序应该还可以对链表进行插入和删除操作链(参照18题)

方案:

根据三的分析,主要问题在于链表的创建以及如何插入和删除的操作上。

如需要创建N=5个结点,

if(i==1)

head=p1;//将链表中第一个新建结点作为表头

else

p2->next=p1;

p2=p1;

p1=new(STUDENT);

cin>>p1->stu_number>>p1->name>>p1->sex>>p1->age;

p2->next=NULL;//最后一个结点的next成员不指向任何结点

在插入时,先根据学号找到新结点的位置,例如要插入到指针变量p指向的结点后,设q指向新结点,则插入操作:

t=p->next;

p->next=q;

q->next=t;

n++;//结点数目增加

这样就将该新结点插入到了指定位置,注意考虑要插入的结点可能位于最后的位置。

删除时,要考虑待删除结点是否为第一个结点,若为中间结点,设指针变量p1指向的结点为待删除结点,p2指向其前一个结点,则删除p2结点的操作为:

p2->next=p1->next;

 

7.课程设计心得

通过对c++的学习,以及对c++的课程设计,我对c++产生很大的兴趣。

课程设计是培养学生综合运用所学知识,分析和解决实际问题,锻炼实践能力的一个重要过程。

当今计算机应用已经普及到我们生活的方方面面。

所以学好计算机知识,学好c++,做好课程设计是非常重要的。

我的c++基础并不好。

在大一的时候学过一点c语言,只是简单了解其中的一些函数和算法。

对于编程,我只能望尘莫及。

经过这学期c++的学习,我也进一步加深了对c++的理解。

课程设计虽然从某种意义上讲很难。

但自从拿到题目到完成整个编程,从理论到实践,我学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了实践是检验理论的重要标准,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能真正提高自己的动手能力和独立思考的能力。

我在设计过程中也遇到了好多问题。

我在后悔当时没好好听课的的时候,也开始复习老师讲过的知识以及上网查资料学习。

我及时改正了我的不足之处,对学过的知识更加深刻了。

同时,我也学到了一些课外知识。

我懂得了:

不怕做不到,就怕不去做。

只要我们有一种永不放弃的执着精神,没有什么办到的。

最后,感谢老师这学期在c++上为我们所做的一切。

同时,对给过我帮助的所有同学表示忠心的感谢!

 

 

8.参考文献

(1)《C++程序设计》谭浩强编著清华大学出版社,2004年版

(2)《C++程序设计教程》钱能编著清华大学出版社,1999年版

(3)《从新手到高手:

C++全方位学习》范磊编著科学出版社

(4)《C++程序设计》曾辉主编北京邮电大学出版社

(5)《C++程序设计》李宁主编中央广播电视大学出版社

 

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

当前位置:首页 > 教学研究 > 教学计划

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

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