数据结构C语言课程设计Word下载.docx

上传人:b****5 文档编号:21714745 上传时间:2023-01-31 格式:DOCX 页数:28 大小:202.02KB
下载 相关 举报
数据结构C语言课程设计Word下载.docx_第1页
第1页 / 共28页
数据结构C语言课程设计Word下载.docx_第2页
第2页 / 共28页
数据结构C语言课程设计Word下载.docx_第3页
第3页 / 共28页
数据结构C语言课程设计Word下载.docx_第4页
第4页 / 共28页
数据结构C语言课程设计Word下载.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

数据结构C语言课程设计Word下载.docx

《数据结构C语言课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构C语言课程设计Word下载.docx(28页珍藏版)》请在冰豆网上搜索。

数据结构C语言课程设计Word下载.docx

航班查询系统

2.1.1题目内容

飞机航班信息包括:

航班号、起点站、终点站、起飞时间、到达时间、机型以及票价,实例如下:

设计航班查询系统要求能对飞机航班信息进行增加、删除、排序和查找。

可按航班的航班号、起点站、终点站、起飞时间以及到达时间进行查询

2.1.2算法描述及实验步骤

算法描述

该航班查询系统采用线性链表存储。

开始,创建链表。

然后输出提示操作选项,由用户输入所选项序号。

执行选项。

当第一次操作结束后,提示是否继续进行操作,再有用户决定。

流程图

2.1.3调试过程及实验结果

(1)完成第一模块:

链表创建以及添加,编译时出现警告:

“warningC4091:

'

typedef'

:

ignoredonleftof'

structfly'

whennovariableisdeclared”,“typedef”时在结构体后面定义一个变量名,所以只需在结构体后面加一个变量名,或者是把结构体的“typedef”去掉。

运行,结果提示错误。

重新检查,发现调用的创建函数和添加函数位置放反了,修改错误,运行成功。

(2)完成其他模块。

在编写排序模块时,链表的排序不懂,通过网上查找,用冒泡法,通过调换链表节点的数据进行排序。

字符串操作

2.2.1题目内容

字符串采用数组存储,建立两个字符串String1和String2.输出两个字符串。

将字符串String2的头n个字符添加到String1的尾部,输出结果查找String3在串String1中的位置,若String3在String1中不存在,则插入String3在String1中的m位置上。

输出结果。

2.2.2算法描述及实验步骤

算法描述

开始,输入两个字符串,然后将string2复制到string1后面。

然后输string3,判断string3是否在string1内,若存在,输出找到;

若不存在,输入插入位置,然后将string3插入string1中,输出string1,结束。

流程图

2.2.3调试过程及实验结果

(1)拷贝string3到string1时,因为移动string1后面的字符,忘了加结束标志,结果输出乱码。

二叉树的运算2

2.3.1题目内容

任务:

请设计一个算法,把二叉树的叶子结点按从左到右的顺序连成一个单链表。

二叉树用二叉链存储,链接时用叶子结点的rchild域存放指针。

2.3.2算法描述及实验步骤

该题采用线性链表存储结构。

开始,创建二叉树,链表。

遍历整棵二叉树,查找叶子节点,当找到是,将叶子节点放入链表当中。

输出结果,结束。

流程图

2.3.3调试过程及实验结果

2.4二叉树运算1

2.4.1题目内容

任务:

求二叉树中指定两个结点共同的最近祖先。

2.4.2算法描述及实验步骤

开始,创建二叉树。

输入要查找的两个节点。

判断两个节点位于根节点的哪一侧,若位于两侧,这根节点为它们的最近共同祖先,否则用递归遍历继续判断,查找。

最后输出结果,结束。

2.4.3调试过程及实验结果

调试过程

这道题的核心的内容是找到要查找的两个节点,然后再找共同祖先,所以我采用的一下方法:

创建的树是事先排好序的,大于根节点的放在右边,小于根节点的放左边,相等输不进去。

所以,通过判断查找的节点位于根节点的那一边,然后往那边查找。

当两节点位于上一节点两侧时,则上一节点为最近共同祖先。

运行结果:

三.课程设计分析与总结

1、这次课程设计为我们提供了一次实践机会,让我们用所学知识有所运用。

2、在这次课程设计上,巩固了以前所学,并且查缺补漏;

通过这次课程设计,有学习了许多新知识。

四.源程序清单

2.1航班查询系统

#include<

stdio.h>

stdlib.h>

string.h>

#defineERROR1

#defineOK0

typedefintStatus;

//给int一个别名Status

typedefstructfly//定义结构体

{

charFlynum[6];

charstar[10];

charreach[10];

charstartime[6];

charreachtime[10];

charType[10];

intprice;

};

typedefstructnode//定义航班信息链表的机构体

structflydata;

//数据域

structnode*next;

//指针域

}Node,*Link;

voidCreateList(Link&

L)

{

L=(Link)malloc(sizeof(Node));

L->

next=NULL;

//先建立一个带头结点的空链表

}

StatusListInsert(Link&

L)//增加航班信息

Linkp,s,r;

s=L->

next;

r=L;

p=(Link)malloc(sizeof(Node));

//生成新节点

if(!

p)

{

printf("

\n空间分配失败"

);

returnERROR;

}

printf("

\n请输入航班信息"

scanf("

%s%s%s%s%s%s%d"

&

p->

data.Flynum,&

data.star,&

data.reach,&

data.startime,&

data.reachtime,&

data.Type,&

data.price);

while(s!

=NULL)//判断该航班是否已经安排了

if(strcmp(p->

data.Flynum,s->

data.Flynum)==0)

{

printf("

\n该航班已经重复"

returnERROR;

}

s=s->

while(r->

next!

=NULL)//添加航班

{

r=r->

}

p->

next=r->

r->

next=p;

returnOK;

}

StatusDelete(Link&

L)//删除航班信息

Linkp,q;

charnum[10];

\n请输入要删除的航班号:

"

%s"

num);

q=L;

p=L->

while(p->

=NULL)

if(strcmp(num,p->

break;

q=q->

p=p->

q->

next=p->

free(p);

voidSuch_num(LinkL)//按航班号查询

Linkp;

\n请输入要查找的航班号"

while(p!

%s"

p->

data.Flynum);

data.star);

data.reach);

data.startime);

data.reachtime);

data.Type);

%d"

voidSuch_Star(LinkL)//按起飞地点查询

\n请输入起飞地点:

data.star)==0)

voidSuch_Reach(LinkL)//按到达地点查询

\n请输入到达地点:

data.reach)==0)

voidSuch_Stime(LinkL)//按起飞时间查询

\n请输入起飞时间:

data.startime)==0)

voidSuch_Rtime(LinkL)//按到达时间查询

\n请输入到达时间:

data.reachtime)==0)

voidShow(LinkL)//显示航班信息

\n以下为所有航班信息:

p=L;

\n%s"

\n"

StatusSort(LinkL)//排序,通过交换数据进行排序;

冒泡排序法

Linkp,q,s;

s=(Link)malloc(sizeof(Node));

s)

for(p=L->

p!

=NULL;

p=p->

next)

for(q=p->

q!

q=q->

if(strcmp(p->

data.startime,q->

data.startime)>

0)

{

s->

data=p->

data;

p->

data=q->

q->

data=s->

}

Show(L);

voidmain()//主函数

LinkL;

inti,a;

|-----------------------欢迎使用航班查询系统-----------------------|\n"

\n**********************************************************"

\n******"

\n***1显示所有航班信息***"

\n***2航班号查询***"

\n***3起飞时间查询***"

\n***4到达时间查询***"

\n***5起飞地点查询***"

\n***6到达地点查询***"

\n***7增加航班信息***"

\n***8删除航班信息***"

\n***9航班排序***"

CreateList(L);

//创建链表

\n|-航班号-|-起飞地点-|-到达地点-|-起飞时间-|-到达时间-|-飞机类型-|-票价-|"

for(i=0;

i<

100;

i++)//用于多长操作

\n\n请输入服务编号:

scanf("

%d"

a);

switch(a)

case1:

Show(L);

case2:

Such_num(L);

case3:

Such_Stime(L);

case4:

Such_Rtime(L);

break;

case5:

Such_Star(L);

case6:

Such_Reach(L);

case7:

ListInsert(L);

case8:

Delete(L);

case9:

Sort(L);

default:

输入无效"

\n请按任意键继续操作!

退出请按0\n"

if(a==0)

2.2字符串操作

voidmain()

inti,m,len1,len3,j;

charstring1[100],string2[100],string3[100];

char*p;

\n请输入string1:

string1);

\n请输入string2:

string2);

\n请输入拷贝数N:

i);

p=strncat(string1,string2,i);

//调用strncat函数,完成字符串的合并。

p);

\n请输入string3:

string3);

p=strstr(string1,string3);

//查找string1中是否存在string3的片段

if(p)

存在\n"

else//string3的插入

请输入插入位置m:

m);

len3=strlen(string3);

len1=strlen(string1);

for(i=len1-1;

i>

=m-1;

i--)

string1[i+len3]=string1[i];

string1[len1+len3]='

\0'

;

for(i=0,j=m-1;

len3;

i++,j++)

string1[j]=string3[i];

%s\n"

string1);

2.3二叉树运算2

#include<

typedefintTElemType;

typedefstructBiTNode

TElemTypedata;

structBiTNode*lchild,*rchild;

}BiNode,*Bitree;

Bitreeroot;

//定义根结点

voidinsert_data(intx)/*生成二叉排序树*/

Bitreep,q,s;

s=(Bitree)malloc(sizeof(BiNode));

//创建结点

s->

data=x;

//结点赋值

lchild=NULL;

rchild=NULL;

root)

root=s;

else

p=root;

while(p)/*如何接入二叉排序树的适当位置*/

q=p;

if(p->

data==x)//相同结点不能重复插入

printf("

dataalreadyexist!

\n"

return;

elseif(x<

data)

p=p->

lchild;

else

rchild;

if(x<

q->

q->

lchild=s;

else

rchild=s;

voidCreateList(Bitree&

L=(Bitree)malloc(sizeof(BiNode));

rchild=NULL;

intPreOrderTraverse(Bitreeroot,Bitree&

L)

Bitreen,p,r;

n=root;

n)return0;

if(n->

lchild==NULL&

&

n->

rchild==NULL)//判断叶子结点并利用指针rchild生成单链表

p=(Bitree)malloc(sizeof(BiNode));

p->

data=n->

while(r->

rchild!

=NULL)

{

r=r->

r

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

当前位置:首页 > 幼儿教育 > 育儿知识

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

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