数据结构完整题目及答案1文档格式.docx

上传人:b****6 文档编号:21972438 上传时间:2023-02-02 格式:DOCX 页数:57 大小:203.13KB
下载 相关 举报
数据结构完整题目及答案1文档格式.docx_第1页
第1页 / 共57页
数据结构完整题目及答案1文档格式.docx_第2页
第2页 / 共57页
数据结构完整题目及答案1文档格式.docx_第3页
第3页 / 共57页
数据结构完整题目及答案1文档格式.docx_第4页
第4页 / 共57页
数据结构完整题目及答案1文档格式.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

数据结构完整题目及答案1文档格式.docx

《数据结构完整题目及答案1文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构完整题目及答案1文档格式.docx(57页珍藏版)》请在冰豆网上搜索。

数据结构完整题目及答案1文档格式.docx

4.2程序设计的基本思想,原理和算法描述:

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

4.3调试和运行程序过程中产生的问题及采取的措施:

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

4.4运行输出结果:

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

4.5源程序及注释:

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

实验五串.........................................................19

5.1上机实验的问题和要求(需求分析):

...................................19

5.2程序设计的基本思想,原理和算法描述:

...............................19

5.3调试和运行程序过程中产生的问题及采取的措施:

........................19

5.4运行输出结果:

......................................................19

5.5源程序及注释:

.....................................................21

实验六循环队列的实现与运算.................................22

6.1上机实验的问题和要求(需求分析):

...................................22

6.2程序设计的基本思想,原理和算法描述:

...............................22

6.3调试和运行程序过程中产生的问题及采取的措施:

........................22

6.4运行输出结果:

......................................................22

6.5源程序及注释:

.....................................................23

实验七栈子系统..................................................26

7.1上机实验的问题和要求(需求分析):

...................................26

7.2程序设计的基本思想,原理和算法描述:

...............................26

7.3调试和运行程序过程中产生的问题及采取的措施:

........................26

7.4运行输出结果:

......................................................26

7.5源程序及注释:

.....................................................28

实验八树...........................................................36

8.1上机实验的问题和要求(需求分析):

..................................36

8.2程序设计的基本思想,原理和算法描述:

..............................39

8.3调试和运行程序过程中产生的问题及采取的措施:

.......................39

8.4运行输出结果:

.....................................................39

8.5源程序及注释:

.....................................................41

实验九建立哈夫曼树与哈夫曼树与码...........................50

9.1上机实验的问题和要求(需求分析):

..................................50

9.2程序设计的基本思想,原理和算法描述:

..............................50

9.3调试和运行程序过程中产生的问题及采取的措施:

.......................50

9.4运行输出结果:

.....................................................50

9.5源程序及注释:

....................................................50

实验十图…………………………….............................53

10.1上机实验的问题和要求(需求分析):

.................................53

10.2程序设计的基本思想,原理和算法描述:

.............................53

10.3调试和运行程序过程中产生的问题及采取的措施:

......................53

10.4运行输出结果:

....................................................53

10.5源程序及注释:

...................................................53

实验一学生成绩分析程序

一、上机实验的问题和要求(需求分析):

【题目】设一个班有10个学生,每个学生有学号,以及数学、物理、英语、语文、体育5门课的成绩信息。

分别编写3个函数以实现以下3个要求:

(1)求数学的平均成绩。

(2)对于有两门以上课程不及格的学生,输出他们的学号、各门课成绩及平均成绩。

(3)输出成绩优良的学生(平均成绩在85分以上或全部成绩都在80分以上)的学号、各门课成绩和平均成绩。

二、程序设计的基本思想,原理和算法描述:

【算法描述】

(1)用数组id[3],name[10],score[5]来记录是个学生的各门课程的成绩.将数学科目的成绩相加再求出平均成绩。

(2)取一个未知数A来求学生的不及格数,a>

=2时输出学生的名字学号和成绩。

(3)求出所有的成绩的平均分并输出各门成绩和平均成绩。

三、调试和运行程序过程中产生的问题及采取的措施:

基本上是输入时的细节如大括号的位置等。

四、运行输出结果

五、源程序及注释:

输入学生的学号姓名和成绩:

#include"

stdio.h"

structSTUDENT

{

charid[3];

charname[10];

intscore[5];

doubleave;

}stu[10];

voidmain()

intnum=10,i,j,all=0;

;

for(i=0;

i<

num;

i++)

{

printf("

\t请输入第%d学生的数据:

"

i+1);

\t学号:

"

);

scanf("

%S"

stu[i].id);

\t姓名:

%s"

stu[i].name);

j=0;

printf("

\t语文课的成绩"

%d"

&

stu[i].score[j]);

j++;

\t数学课的成绩"

scanf("

\t物理课的成绩"

\t英语课的成绩"

\t体育课的成绩"

}

pj();

bjg();

yx();

}

输出数学平均成绩:

voidpj(stu[10])

inta,b,i;

10;

i++);

a=a+stu[i].score[2];

}

b=a/10;

\ttheeveragescoreis:

b);

求出不及格人数:

voidbjg()

inti,j=0,c=0;

for(j=0;

j<

5;

{

if(stu[i].score[j]<

60)

{c=c++;

}

if("

c>

=2"

两门课以上不及格的同学:

%d\t%d\t%d\t%d\t"

stu[i].id,stu[i].name,stu[i].score);

输出优秀学生:

voidyx()

if(stu[i].score[j]>

=80)

c==5"

优秀学生为:

实验二线性表的基本操作

【题目】线性表的插入,删除。

【算法描述】当我们要在顺序表的第i个位置上插入一个元素时,必须先将顺序表中第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。

若是欲删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置。

四、运行输出结果:

#include<

stdio.h>

typedefstructlinknode

chardata;

structlinknode*next;

}linnode;

linnode*head;

intn;

创建线性表:

voidCreatelist()

n=0;

linknode*p,*s;

charx;

intz=1;

head=newlinknode;

p=head;

\n\t\t请逐个输入结点,以“X”为结素标记!

\n"

while(z)

\t\t输入一个字符数据,并按回车:

%c"

x);

getchar();

if(x!

='

x'

s=newlinknode;

n++;

s->

data=x;

p->

next=s;

next=NULL;

p=s;

elsez=0;

线性表的插入:

voidInsList(inti,charx)

linknode*s,*p;

intj=0;

while(p!

=NULL&

&

i)

p=p->

next;

if(p!

=NULL)

s=newlinknode;

s->

next=p->

p->

n++;

else

\n\t\t线性表为空或插入位置超出!

线性表的删除:

voidDelList(charx)

linknode*p,*q;

if(head->

next==NULL)

\n\t\t线性表下溢!

return;

\n\t\t线性表已经为空!

q=head;

p=head->

p->

data!

=x)

q=p;

q->

deletep;

n--;

\n\t\t结点已经被删除!

\n\t抱歉!

没有找到您要删除的节点."

实验三链表的基本操作

【题目】建立线性链表,链表的插入、删除,查找。

【算法描述】线性链表不需要用地址连续的存储空间来实现,链式存储的线性表对于插入、删除操作不再需要移动数据元素。

建立线性链表:

chardata;

structlinknode*next;

voidCreateList()

linnode*p,*s;

head=newlinnode;

\n\t\t建立一个线性表"

\n\t\t说明:

请逐个输入字符,结素标记为"

x"

!

\t\tputin:

s=newnode;

链表的插入:

linnode*s,*p;

s=newlinnode;

else

\n\t\t线性表为空或插入位置出错!

链表的删除:

node*p,*q;

if(head==NULL)

\t\t链表下溢!

\t\t线性表已经为空!

\t\t已经被删除!

\t\t未找到!

链表的查找:

实验四单链表综合实验

【题目】

(1)、建立自己的有关单链表的头文件

(2)、单链表基本操作的实现

[问题描述]要在带头结点的单链表h中第i个数据元素之前插入一个数据元素x,首先需要在单链表中寻找到第i-1个结点并用指针p指示,然后申请一个由指针s指示的结点空间,并置x为其数据域值,最后修改第i-1个结点,并使x结点的指针指向第i个结点,要在带头结点的单链表h中删除第i个结点,首先要计数寻找到第i个结点并使指针p指向其前驱第i-1个结点,然后删除第i个结点并释放被删除结点空间。

【算法描述】链式存储结构不是随机存储结构,即不能直接取到单链表中某个结点,而要从单链表的头结点开始一个一个地计数寻找。

#include<

stdio.h>

malloc.h>

typedefcharDataType;

建立数组:

typedefstructnode

DataTypedata;

structnode*next;

}ListNode;

产生头结点:

voidInit_List(ListNode**L)

(*L)=(ListNode*)malloc(sizeof(ListNode));

(*L)->

测量单链表长度:

intList_Length(ListNode*L)

intn=0;

ListNode*p=L->

while(p!

n++;

p=p->

returnn;

单链表的查找第i个节点:

ListNode*GetNode(ListNode*L,inti)

intj;

ListNode*p;

p=L;

j=0;

/*从头结点开始扫描*/

while(p->

next&

j!

=i)/*顺指针向后扫描,直到p->

next为NULL或i=j为止*/

{

j++;

if(i==j)

returnp;

/*找到了第i个结点*/

else

returnNULL;

/*当i<

0或i>

j时,找不到第i个结点*/

}

单链表在第i个节点插入:

voidInsertList(ListNode*L,DataTypex,inti)

ListNode*p,*s;

p=GetNode(L,i-1);

/*寻找第i-1个结点*/

if(p==NULL)/*i<

1或i>

n+1时插入位置i有错*/

{

printf("

error!

return;

s=(ListNode*)malloc(sizeof(ListNode));

/*建立一个新的节点*/

s->

/*将节点插入单链表*/

删除单链表第i个节点:

voidDeleteList(ListNode*L,inti)

ListNode*p,*r;

p=GetNode(L,i-1);

/*找到第i-1个结点*/

if(p==NULL||p->

next==NULL)

r=p->

/*使r指向被删除的结点a*/

next=r->

/*将ai从链上删除*/

free(r);

使用头插法建立带头结点链表算法:

ListNode*CreatListF(void)

charch;

ListNode*head=(ListNode*)malloc(sizeof(ListNode));

/*生成头结点*/

ListNod

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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