没有合适的资源?快使用搜索试试~ 我知道了~
数据结构实验指导书及答案(徐州工程学院).docx
需积分: 5 1 下载量 27 浏览量
2021-12-26
12:42:05
上传
评论
收藏 488KB DOCX 举报
温馨提示
试读
43页
数据结构实验指导书及答案(徐州工程学院).docx
资源详情
资源评论
资源推荐
《数据结构实验》实验指导书及答案
信电工程学院 计算机科学和技术教研室 编
2011.12
数据结构实验所有代码整理
作者 郑涛
声明:在这里我整理了数据结构实验的所有代码,希望能对大家的数据结构实验的考试有所帮助,大
家可以有选择地浏览,特别针对一些重点知识需要加强记忆(ps:重点知识最好让孙天凯给出),希望
大家能够在数据结构实验的考试中取得令人满意的成绩,如果有做的不好的地方请大家谅解并欢迎予
以指正。
实验一 熟悉编程环境
实验预备知识:
.熟悉本课程的语言编译环境( 或 ),能够用 语言编写完整的程序,并能够发现和改
正错误。
.能够灵活的编写 程序,并能够熟练输入 程序。
一、实验目的
.熟悉 语言编译环境,掌握 程序的编写、编译、运行和调试过程。
.能够熟练的将 程序存储到指定位置。
二、实验环境
⒈ 硬件:每个学生需配备计算机一台。
⒉ 软件: 操作系统;
三、实验要求
.将实验中每个功能用一个函数实现。
.每个输入前要有输入提示(如:请输入 个整数当中用空格分割:),每个输出数据都要求
有内容说明(如: 和 的和是:。)。
.函数名称和变量名称等用英文或英文简写(每个单词第一个字母大写)形式说明。
四、实验内容
.在自己的 盘中建立“姓名学号”文件夹,并在该文件夹中创建“实验 文件夹(以后每次实
验分别创建对应的文件夹),本次实验的所有程序和数据都要求存储到本文件夹中(以后实验都按照
本次要求)。
.编写一个输入某个学生 门课程成绩的函数( 门课程成绩放到结构体数组中,结构体包
括:课程编号,课程名称,课程成绩)。
.编写一个求 门成绩中最高成绩的函数,输出最高成绩和对应的课程名称,如果有多个最高
成绩,则每个最高成绩均输出。
.编写一个求 门成绩平均成绩的函数。
.编写函数求出比平均成绩高的所有课程及成绩。
!
!
"
#
"$%
&"$&'()%
"$*&%
+%
"()%
,-./
#
%
-0.1-&-231/%
0.4%%/
#
&0.15 5
50167()"$67()"$&'67()"$*&/%
+
-0.18"-231/%
0.4%%/
#
-0.15 5 503
16()"$6()"$&'6()"$*&/%
+
+
,"$'&9./
#
6:&*%
'&94()"$*&%
0.4%%/
#
0.()"$*&!'&9/
'&94()"$*&%
:&*4%
+
-0.1 * 0"550316(:&*)"$&'6'&9/%
+
,"$&,&*./
#
%
&,&*6'4()"$*&%
0.4%%/
#
'4()"$*&%
+
&,&*4';%
-0.1"<&,&*50316&,&*/%
+
,"$*&,&*./
#
6:&*%
&,&*6'4()"$*&%
0.4%%/
#
'4()"$*&%
+
&,&*4';%
0.4%%/
#
0.()"$*&!&,&*/
#
:&*4%
-0.1" *& & &,&* 5 503
16(:&*)"$&'6(:&*)"$*&/%
+
+
+
'&./
#
-./%
"$'&9./%
"$&,&*./%
"$*&,&*./%
%
+
实验二 顺序表的基本操作
实验预备知识:
.熟练运用数组进行程序设计,掌握数组名和指针作为函数参数。
.掌握结构体和结构体数组的访问与使用。
.熟练实现顺序表类型和变量(如下所示)定于、熟悉顺序表的访问原理(顺序存储、随机访
问)。
一、实验目的
.掌握顺序表的建立、数据元素的插入和删除、掌握数据元素的访问。
.能够熟练的使用函数来实现顺序表的各种操作。
二、实验环境
⒈ 硬件:每个学生需配备计算机一台。
⒉ 软件: 操作系统;
三、实验要求
.定义一顺序表类型,并定义顺序表。
.将教材中顺序表的建立、初始化、插入、删除等函数实现。
.顺序表能够存储 名学生的基本信息(包括姓名、学号和成绩)。
.由主函数按照用户要求对各个顺序表操作访问。
.每次操作之前要有明确的说明,操作后要输出操作结果。
=.分析顺序表的插入、删除、查找的时间和空间复杂度。
四、实验内容
.在自己的 盘的“姓名学号”文件夹中创建“实验 文件夹,本次实验的所有程序和数据都要
求存储到本文件夹中。
.完成顺序表操作的如下函数:建立,初始化,增加,插入,删除。
#include "stdio.h"
#include "malloc.h"
#include "string.h"
#define LIST_INIT_SIZE 1
#define LISTINCREMENT 1
struct stu
{char name[6];
char num[3];
int cj;};
struct sqlist
{struct stu *elem;
int length;
int listsize;};
void main()
{struct sqlist* initlist_hc();
void cshlist_hc(struct sqlist *l);
void listinsert_hc(struct sqlist *l);
void listdelete_hc(struct sqlist *l);
void listhb_hc(struct sqlist *l1,struct sqlist *l2,struct sqlist *l3);
struct sqlist *l1,*l2,*l3;
char f;int i, k=0;
printf("请选择对顺序表的操作,操作菜单如下:\n");
for(i=0;i<80;i++)printf("*");
printf("建立顺序表(C)\n");
printf("初始化顺序表(N)\n");
printf("顺序表中插入元素(I)\n");
printf("顺序表中删除元素(D)\n");
printf("合并顺序表(H)\n");
printf("退出系统(E)\n");
for(i=0;i<80;i++)printf("*");
do
{printf("输入大写字母按 Enter 确定:");
flushall();
f=getchar();
if(f=='C')
{if(k==0)l1=initlist_hc();
else {l2=initlist_hc();}
k++;}
else if(f=='N')
{if(k==1)cshlist_hc(l1);else cshlist_hc(l2);}
else if(f=='I')
{if(k==1)listinsert_hc(l1);else listinsert_hc(l2);}
else if(f=='D')
{if(k==1)listdelete_hc(l1);else listdelete_hc(l2);}
else if(f=='H')
{l3=initlist_hc();
listhb_hc(l1,l2,l3);}
}while(f!='E'); }
struct sqlist *initlist_hc()
{struct sqlist *l;
l=(struct sqlist*)malloc(sizeof(struct sqlist));
if(!l)printf("出错!\n");
return(l);}
void cshlist_hc(struct sqlist *l)
{struct stu *newbase;
void printlist_hc(struct sqlist *l);
char x[6],y[3];int z;
l->elem=(struct stu*)malloc(LIST_INIT_SIZE*sizeof(struct stu));
if(!l->elem)printf("出错!\n");
l->length=0;
l->listsize=LIST_INIT_SIZE;
printf("请输入信息以-1 结束:\n");
scanf("%s %s %d",x,y,&z);
while(z!=-1)
{if(l->length==l->listsize)
{newbase=(struct stu*)realloc(l->elem,(l->listsize+LISTINCREMENT)*sizeof(struct stu));
if(!newbase)printf("出错!\n");
l->elem=newbase;l->listsize+=LISTINCREMENT;}
strcpy(l->elem[l->length].name,x);
strcpy(l->elem[l->length].num,y);
l->elem[l->length].cj=z;
scanf("%s %s %d",x,y,&z);
if(z!=-1)l->length++;}
printlist_hc(l);}
void listinsert_hc(struct sqlist *l)
{int i,j;
struct stu *newbase;
void printlist_hc(struct sqlist *l);
if(l->length==l->listsize)
{newbase=(struct stu*)realloc(l->elem,(l->listsize+LISTINCREMENT)*sizeof(struct stu));
if(!newbase)printf("出错!\n");
l->elem=newbase;l->listsize+=LISTINCREMENT;}
printf("输入要插入信息的位置:");
scanf("%d",&j);j--;
for(i=l->length;i>=j;i--)
{strcpy(l->elem[i+1].name,l->elem[i].name);
strcpy(l->elem[i+1].num,l->elem[i].num);
l->elem[i+1].cj=l->elem[i].cj;}
printf("输入插入信息:\n");
scanf("%s %s %d",l->elem[j].name,l->elem[j].num,&l->elem[j].cj);
l->length++;
printlist_hc(l);}
void listdelete_hc(struct sqlist *l)
{void printlist_hc(struct sqlist *l);
int i,j;
剩余42页未读,继续阅读
不秃头的新农民
- 粉丝: 5
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0