网络系统课程设计论文参考.docx
- 文档编号:10610835
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:19
- 大小:62.81KB
网络系统课程设计论文参考.docx
《网络系统课程设计论文参考.docx》由会员分享,可在线阅读,更多相关《网络系统课程设计论文参考.docx(19页珍藏版)》请在冰豆网上搜索。
网络系统课程设计论文参考
《数据结构》课程设计报告
学院专业
班级学号
学生姓名***指导教师
课程成绩完成日期2013年7月12日
课程设计成绩评定
学院城南学院专业计算机科学与技术
班级学号
学生姓名指导教师
完成日期2013年7月12日
指导教师对学生在课程设计中的评价
评分项目
优
良
中
及格
不及格
课程设计中的创造性成果
学生掌握课程内容的程度
课程设计完成情况
课程设计动手能力
文字表达
学习态度
规范要求
课程设计论文的质量
指导教师对课程设计的评定意见
综合成绩指导教师签字2013年7月12日
课程设计任务书
学院专业
课程名称
数据结构课程设计
时间
2012~2013学年第二学期19~20周
学生姓名
指导老师
题目
设计出树结构的相关函数库,以便在程序设计中调用
主要内容:
使用MicrosoftVisualC++6.0设计二叉链表结构的相关函数库,以便在程序设计中调用设计二叉链表结构的相关函数库,在程序设计中调用,并实现二叉树的各种基本函数以及常用函数。
要求:
(1)包括树结构的存储结构及各种基本函数以及常用函数(自己确定函数、函数形式及理由)。
(2)最好能借助语言环境实现图形显示功能,以便能将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。
(3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。
应当提交的文件:
(1)课程设计学年论文。
(2)课程设计附件(主要是源程序)。
设计出树结构的相关函数库,以便在程序设计中调用
学生姓名:
指导老师:
摘要作为用户我们极少接触系统调用,但是我们熟悉C语言,对库函数的调用并不陌生。
C语言支持一系列库函数的调用,而事实上,库函数的调用是C语言在较高层次上调用的一种方式,函数调用是操作系统内核提供给程序员的程序设计界面,它们是内核提供给用户调用的函数。
使用MicrosoftVisualC++6.0设计二叉链表结构的相关函数库,操作系统通过执行main函数开始运行一个C程序。
main函数可以调用C程序中的其他函数来完成程序的任务,其他函数也可以互相调用,但其他函数(非main函数)不能调用main函数(main函数只能由操作系统来调用)。
关键词设计函数库;C程序的执行;C程序的调用;C语言;VC++6.0
目录
1引言1
1.1课程设计目的1
1.2课程设计要求1
2问题的描述2
2.1问题的模型化描述2
3数据结构3
3.1定义二叉树结点类型3
4模块划分3
4.1入队3
4.2队列判空3
4.3出队4
4.4根据先序递归建立二叉树4
4.5递归遍历输出函数4
4.6层次遍历输出算法5
4.7求二叉树深度得算法5
4.8求二叉树叶子结点数的算法5
5运行程序6
5.1程序运行结果6
6结束语8
附录:
源程序代码9
1引言
VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。
编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。
编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:
词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。
主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
将编译产生的.obj文件和系统库连接装配成一个可以执行的程序。
由于在实际操作中可以直接点击Build从源程序产生可执行程序,将源程序翻译成可执行文件的过程分为编译和链接两个独立的步骤,之所以这样做,主要是因为:
在一个较大的复杂项目中,有很多人共同完成一个项目(每个人可能承担其中一部分模块),其中有的模块可能是用汇编语言写的,有的模块可能是用VC写的,有的模块可能是用VB写的,有的模块可能是购买(不是源程序模块而是目标代码)或已有的标准库模块,因此,各类源程序都需要先各自编译成目标程序文件,再通过链接程序将这些目标程序文件连接装配成可执行文件,再调用函数或运行可执行程序文件。
1.1课程设计目的
(1)使用MicrosoftVisualC++6.0设计二叉链表结构的相关函数库
(2)在程序设计中调用设计二叉链表结构的相关函数库
(3)在程序设计中调用并实现二叉树的各种基本函数以及常用函数。
1.2课程设计要求
(1)按要求编写课程设计报告书,能正确阐述设计结果。
(2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。
(3)学会文献检索的基本方法和综合运用文献的能力。
(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。
2.问题的描述
2.1问题的模型化描述
3数据结构
3.1定义二叉树结点类型
typedefchardatatype;
typedefstructNode{
chardata;
structNode*Lchild;
structNode*Rchild;
}BiTNode,*BiTree;//二叉树节点,二叉链表
typedefstructQueueNode{
BiTreedata;
structQueueNode*next;
}LinkQueueNode;//队列中的每个节点
typedefstruct
{
LinkQueueNode*front;
LinkQueueNode*rear;
}LinkQueue;//队列
4.模块划分
4.1入队
voidInitQueue(LinkQueue*Q)
{
Q->front=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
if(Q->front!
=NULL){
Q->rear=Q->front;
Q->front->next=NULL;
}elseprintf("分配空间失败!
\n");
}
4.2队列判空
voidEnterQueue(LinkQueue*Q,BiTreex)
{
LinkQueueNode*NewNode;
NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
if(NewNode!
=NULL){
NewNode->data=x;
NewNode->next=NULL;
Q->rear->next=NewNode;
Q->rear=NewNode;
}
4.3出队
intQueueIsEmpty(LinkQueue*Q)
{
if(Q->front==Q->rear)
return1;
elsereturn0;
}
4.4根据先序递归建立二叉树
voidDeleteQueue(LinkQueue*Q,BiTree*x)
{
LinkQueueNode*p;
if(Q->front==Q->rear)
return;
p=Q->front->next;
Q->front->next=p->next;
if(Q->rear==p)
Q->rear=Q->front;
*x=p->data;
free(p);
4.5递归遍历输出函数
voidCreateBiTree(BiTree*bt)
{
charch;
ch=getchar();
if(ch=='.')*bt=NULL;
else
{
*bt=(BiTree)malloc(sizeof(BiTNode));
(*bt)->data=ch;
CreateBiTree(&((*bt)->Lchild));
CreateBiTree(&((*bt)->Rchild));
}
}
/*先序递归遍历二叉树*/
voidPreOrder(BiTreeroot)
{
if(root!
=NULL){
printf("%c",root->data);
PreOrder(root->Lchild);
PreOrder(root->Rchild);
}
}
/*后序递归遍历二叉树*/
4.6层次遍历输出算法
voidPostOrder(BiTreeroot)
{
if(root!
=NULL){
PostOrder(root->Lchild);
PostOrder(root->Rchild);
printf("%c",root->data);
}
}
voidInOrder(BiTreeroot)
{
if(root!
=NULL){
InOrder(root->Lchild);
printf("%c",root->data);
InOrder(root->Rchild);
}
}
4.7求二叉树深度得算法
voiddepth(BiTreeroot,int&dep)
{intdep1,dep2;
if(!
root)dep=0;
else
{depth(root->Lchild,dep1);
depth(root->Rchild,dep2);
dep=dep1>dep2?
dep1+1:
dep2+1;
}
}
4.8求二叉树叶子结点数的算法
voidcountleaf(BiTreeroot,int&n)
{if(root)
{
countleaf(root->Lchild,n);
if(!
root->Lchild&&!
root->Rchild)n++;
countleaf(root->Rchild,n);
}
}
5运行程序
5.1程序运行结果
7结束语
本次课程设计为时二周,我选的课题是设计出树结构的相关函数库,以便在程序设计中的调用。
其主要研究内容在于实现了二叉链表的相关函数库的调用。
为了实现以链表为存储结构的二叉树的有关操作,要熟练掌握二叉链表的特性,但对于一些算法较为复杂,代码量多些,容易出现一些变量的定义、函数声明、函数调用等细节上的问题出错。
在本程序的设计过程中,为了克服以上困难,采取了一些措施:
建立清晰的程序设计的步骤方法,分步各个模块程序设计,进行仔细的总体结构设计,反复调试、细心观察达到完善整个系统等。
二叉树的递归算法主要是将二叉树存储到链表结构中。
遍历是二叉树各种操作的基础,先序、中序、后序是二叉树遍历的三种基本遍历方法。
而这些都是数据结构的基础内容,是我们必须理解和牢记的基础知识。
将这些基础算法综合起来,更能清晰地认识和理解各种算法的作用。
当然,要学会编程不会仅局限于课本知识,而是根据课本知识进行有效的拓展,并且不得不学会在众多的参考资料中搜索有用的自己所需的知识,并迫使自己去学习掌握它们,从中不断提高自己。
虽然程序规模不大,我们依然为此付出了努力,仍免不了各种错误的出现。
编程过程需要很大的毅力和耐心,而且要有良好的思维和扎实的专业基础知识,所以我们需要不断的学习,发现自身不足之处并改正它,逐步提高自身能力,不断取得进步。
对于数据结构的学习,一直感到很吃力,也想过放弃。
通过实践,我们接触到了很多关于的MicrosoftVisualC++6.0编程让我们认识到知识的运用性,并加深对基础知识的理解,从中了解自己需要学习的东西并学会自学。
在此我们要感谢我的老师对我们专心致志的辅导,让我们学会了许多分析和解决问题的方法,让我们受益匪浅。
通过几个星期的努力,虽然从中也发现了自己很多不足,可能其中还有不少问题,但我觉得最重要的是自己也从中得到很多;不敢说百分百的完成也应该基本上完成了课题任务,成功地实现课题目标。
参考文献
[1]严蔚敏.数据结构(C语言版)[M].北京:
清华大学出版社,1997.
[2]谭浩强.C程序设计(第三版)[M].北京:
清华大学出版社,2005.1.
附录:
源程序代码
#include
#include
typedefstructNode{
chardata;
structNode*Lchild;
structNode*Rchild;
}BiTNode,*BiTree;//二叉树节点,二叉链表
typedefstructQueueNode{
BiTreedata;
structQueueNode*next;
}LinkQueueNode;//队列中的每个节点
typedefstruct
{
LinkQueueNode*front;
LinkQueueNode*rear;
}LinkQueue;//队列
/*队列的初始化*/
voidInitQueue(LinkQueue*Q)
{
Q->front=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
if(Q->front!
=NULL){
Q->rear=Q->front;
Q->front->next=NULL;
}elseprintf("分配空间失败!
\n");
}
/*入队*/
voidEnterQueue(LinkQueue*Q,BiTreex)
{
LinkQueueNode*NewNode;
NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
if(NewNode!
=NULL){
NewNode->data=x;
NewNode->next=NULL;
Q->rear->next=NewNode;
Q->rear=NewNode;
}
}
/*队列判空*/
intQueueIsEmpty(LinkQueue*Q)
{
if(Q->front==Q->rear)
return1;
elsereturn0;
}
/*出队*/
voidDeleteQueue(LinkQueue*Q,BiTree*x)
{
LinkQueueNode*p;
if(Q->front==Q->rear)
return;
p=Q->front->next;
Q->front->next=p->next;
if(Q->rear==p)
Q->rear=Q->front;
*x=p->data;
free(p);
}
/*利用扩展先序遍历序列
创建二叉链表*/
voidCreateBiTree(BiTree*bt)
{
charch;
ch=getchar();
if(ch=='.')*bt=NULL;
else
{
*bt=(BiTree)malloc(sizeof(BiTNode));
(*bt)->data=ch;
CreateBiTree(&((*bt)->Lchild));
CreateBiTree(&((*bt)->Rchild));
}
}
/*先序递归遍历二叉树*/
voidPreOrder(BiTreeroot)
{
if(root!
=NULL){
printf("%c",root->data);
PreOrder(root->Lchild);
PreOrder(root->Rchild);
}
}
/*后序递归遍历二叉树*/
voidPostOrder(BiTreeroot)
{
if(root!
=NULL){
PostOrder(root->Lchild);
PostOrder(root->Rchild);
printf("%c",root->data);
}
}
voidInOrder(BiTreeroot)
{
if(root!
=NULL){
InOrder(root->Lchild);
printf("%c",root->data);
InOrder(root->Rchild);
}
}
/*层序遍历
对给定的二叉树进行层序遍历*/
voidLayerOrder(BiTreeroot)
{
BiTree*x;
//这里要记得申请空间
x=(BiTree*)malloc(sizeof(BiTree));
if(x==NULL){
printf("内存分配失败!
\n");
}
LinkQueue*Q;
Q=(LinkQueue*)malloc(sizeof(LinkQueue));
InitQueue(Q);
EnterQueue(Q,root);
while(!
QueueIsEmpty(Q)){
DeleteQueue(Q,x);
printf("%c",(*x)->data);
if((*x)->Lchild)EnterQueue(Q,(*x)->Lchild);
if((*x)->Rchild)EnterQueue(Q,(*x)->Rchild);
}
}
voidcountleaf(BiTreeroot,int&n)
{if(root)
{
countleaf(root->Lchild,n);
if(!
root->Lchild&&!
root->Rchild)n++;
countleaf(root->Rchild,n);
}
}
voiddepth(BiTreeroot,int&dep)
{intdep1,dep2;
if(!
root)dep=0;
else
{depth(root->Lchild,dep1);
depth(root->Rchild,dep2);
dep=dep1>dep2?
dep1+1:
dep2+1;
}
}
intmain(intargc,char**argv)
{
intn=0,dep;
BiTreeroot;
CreateBiTree(&root);
printf("先序递归遍历:
\n");
PreOrder(root);
printf("\n");
printf("中序递归遍历:
\n");
InOrder(root);
printf("\n");
printf("后序递归遍历:
\n");
PostOrder(root);
printf("\n");
printf("层序遍历:
\n");
LayerOrder(root);
printf("\n");
depth(root,dep);
printf("深度dep=%d\n",dep);
countleaf(root,n);
printf("叶子结点数n=%d\n",n);
printf("\n");
return0;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 系统 课程设计 论文 参考
![提示](https://static.bdocx.com/images/bang_tan.gif)