数据结构完整题目及答案1.docx

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

数据结构完整题目及答案1.docx

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

数据结构完整题目及答案1.docx

数据结构完整题目及答案1

数据结构与算法

实验报告

 

目录

实验一学生成绩分析程序............................................4

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

.....................................4

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

..................................4

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

...........................4

1.4运行输出结果:

.........................................................4

1.5源程序及注释:

........................................................5

实验二线性表的基本操作............................................8

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

......................................8

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

..................................8

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

...........................8

2.4运行输出结果:

.........................................................8

2.5源程序及注释:

........................................................8

实验三链表的基本操作..............................................11

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

.....................................11

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

.................................11

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

..........................11

3.4运行输出结果:

........................................................11

3.5源程序及注释:

.......................................................11

实验四单链表综合实验.........................................14

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

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

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

{

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

",i+1);

printf("\t学号:

");

scanf("%S",stu[i].id);

printf("\t姓名:

");

scanf("%s",stu[i].name);

j=0;

printf("\t语文课的成绩");

scanf("%d",&stu[i].score[j]);

j++;

printf("\t数学课的成绩");

scanf("%d",&stu[i].score[j]);

j++;

printf("\t物理课的成绩");

scanf("%d",&stu[i].score[j]);

j++;

printf("\t英语课的成绩");

scanf("%d",&stu[i].score[j]);

j++;

printf("\t体育课的成绩");

scanf("%d",&stu[i].score[j]);

}

pj();

bjg();

yx();

}

输出数学平均成绩:

voidpj(stu[10])

{

inta,b,i;

for(i=0;i<10;i++);

{

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

}

b=a/10;

printf("\ttheeveragescoreis:

%d",b);

}

求出不及格人数:

voidbjg()

{

inti,j=0,c=0;

for(i=0;i<10;i++);

{

for(j=0;j<5;i++);

{

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

{c=c++;}

}

if("c>=2");

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

");

printf("%d\t%d\t%d\t%d\t",stu[i].id,stu[i].name,stu[i].score);

}

}

输出优秀学生:

voidyx()

{

inti,j=0,c=0;

for(i=0;i<10;i++);

{

for(j=0;j<5;i++);

{

if(stu[i].score[j]>=80)

{c=c++;}

}

if("c==5");

printf("优秀学生为:

");

printf("%d\t%d\t%d\t%d\t",stu[i].id,stu[i].name,stu[i].score);

}

}

 

实验二线性表的基本操作

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

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

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

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

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

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

四、运行输出结果:

五、源程序及注释:

#include

typedefstructlinknode

{

chardata;

structlinknode*next;

}linnode;

linnode*head;

intn;

创建线性表:

voidCreatelist()

{

n=0;

linknode*p,*s;

charx;

intz=1;

head=newlinknode;

p=head;

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

\n");

while(z)

{

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

");

scanf("%c",&x);

getchar();

if(x!

='x')

{

s=newlinknode;

n++;

s->data=x;

p->next=s;

s->next=NULL;

p=s;

}

elsez=0;

}

}

线性表的插入:

voidInsList(inti,charx)

{

linknode*s,*p;

p=head;

intj=0;

while(p!

=NULL&&j

{

j++;

p=p->next;

}

if(p!

=NULL)

{

s=newlinknode;

s->data=x;

s->next=p->next;

p->next=s;

n++;

}

else

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

\n");

}

线性表的删除:

voidDelList(charx)

{

linknode*p,*q;

if(head->next==NULL)

{

printf("\n\t\t线性表下溢!

");

return;

}

if(head->next==NULL)

{

printf("\n\t\t线性表已经为空!

");

return;

}

q=head;

p=head->next;

while(p!

=NULL&&p->data!

=x)

{

q=p;

p=p->next;

}

if(p!

=NULL)

{

q->next=p->next;

deletep;

n--;

printf("\n\t\t结点已经被删除!

");

scanf("\n\t抱歉!

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

}

}

 

实验三链表的基本操作

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

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

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

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

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

四、运行输出结果:

五、源程序及注释:

建立线性链表:

#include

typedefstructlinknode

{

chardata;

structlinknode*next;

}linnode;

linnode*head;

intn;

voidCreateList()

{

n=0;

linnode*p,*s;

charx;

intz=1;

head=newlinnode;

p=head;

printf("\n\t\t建立一个线性表");

printf("\n\t\t说明:

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

\n");

while(z)

{

printf("\t\tputin:

");

scanf("%c",&x);

getchar();

if(x!

='x')

{

s=newnode;

n++;

s->data=x;

s->next=s;

}

elsez=0;

}

}

链表的插入:

voidInsList(inti,charx)

{

linnode*s,*p;

p=head;

intj=0;

while(p!

=NULL&&j

{

j++;

p=p->next;

}

if(p!

=NULL)

{

s=newlinnode;

s->data=x;

s->next=p->next;

p->next=s;

n++;

}

else

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

\n");

}

链表的删除:

voidDelList(charx)

{

node*p,*q;

if(head==NULL)

{

printf("\t\t链表下溢!

\n");

return;

}

if(head->next==NULL)

{

printf("\t\t线性表已经为空!

");

return;

}

q=head;

p=head->next;

while(p!

=NULL&&p->data!

=x)

{

q=p;

p=p->next;

}

if(p!

=NULL)

{

q->next=p->next;

deletep;

n--;

printf("\t\t已经被删除!

\n");

}

else

printf("\t\t未找到!

\n");

}

链表的查找:

 

实验四单链表综合实验

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

【题目】

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

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

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

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

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

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

四、运行输出结果:

五、源程序及注释:

#include

#include

typedefcharDataType;

建立数组:

typedefstructnode

{

DataTypedata;

structnode*next;

}ListNode;

产生头结点:

voidInit_List(ListNode**L)

{

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

(*L)->next=NULL;

}

测量单链表长度:

intList_Length(ListNode*L)

{

intn=0;

ListNode*p=L->next;

while(p!

=NULL)

{

n++;

p=p->next;

}

returnn;

}

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

ListNode*GetNode(ListNode*L,inti)

{

intj;

ListNode*p;

p=L;j=0;/*从头结点开始扫描*/

while(p->next&&j!

=i)/*顺指针向后扫描,直到p->next为NULL或i=j为止*/

{

p=p->next;

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->data=x;s->next=p->next;p->next=s;/*将节点插入单链表*/

}

删除单链表第i个节点:

voidDeleteList(ListNode*L,inti)

{

ListNode*p,*r;

p=GetNode(L,i-1);/*找到第i-1个结点*/

if(p==NULL||p->next==NULL)

{

printf("error!

");

return;

}

r=p->next;/*使r指向被删除的结点a*/

p->next=r->next;/*将ai从链上删除*/

free(r);

}

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

ListNode*CreatListF(void)

{

charch;

ListNode*head=(ListNode*)malloc(sizeof(ListNode));/*生成头结点*/

Li

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

当前位置:首页 > 农林牧渔 > 水产渔业

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

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