数据结构完整题目及答案1文档格式.docx
- 文档编号:21972438
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:57
- 大小:203.13KB
数据结构完整题目及答案1文档格式.docx
《数据结构完整题目及答案1文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构完整题目及答案1文档格式.docx(57页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 完整 题目 答案