数据结构实验指导书专科.docx
- 文档编号:28998405
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:13
- 大小:17.93KB
数据结构实验指导书专科.docx
《数据结构实验指导书专科.docx》由会员分享,可在线阅读,更多相关《数据结构实验指导书专科.docx(13页珍藏版)》请在冰豆网上搜索。
数据结构实验指导书专科
《数据结构》实验指导书
一、实验教学的目的与基本要求
实验目的:
用计算机来解决实际问题时,就要涉及到数据的表示及数据的处理,而数据表示及数据处理正是数据结构课程的主要研究对象,通过这两方面内容的学习,为后续课程,特别是软件方面的课程打下了厚实的知识基础,同时也提供了必要的技能训练。
因此,数据结构课程在计算机应用中具有举足轻重的作用。
本课程实验采用实验教学和学生实验相结合方式,使学生掌握数据结构的基本原理和编程方法,达到提高学生分析问题和解决问题的能力的目的。
实验要求:
1、实验前要预习:
实验前必须认真预习相关的知识,做好充分准备。
2、学生进入实验室,要保持室内整洁和安静。
按照指定的内容进行实验。
3、学生在实验前做好预习,写好算法,在教师指导下学生再自己编程;实验完毕由教师验收合格后方可离开,并写好实验报告。
4、实验报告要使用专门的实验报告纸。
报告内容包括实验目的、实验用仪器设备、实验内容、实验流程图、计算公式以及数据处理和报告项目问题讨论等。
要求书写文字整齐简洁。
5、 实验过程中要注意人身和设备安全,遇到事故或出现异常现象,应立即切断电源,保持现场并报告指导教师处理。
二、实验报告要求、实验考核方式、内容及成绩评定标准
实验报告要求内容完整,验证性实验写出验证结果。
实验考核方式依据实验报告完成情况和实验上机情况综合考核。
根据实验报告和实验课出席情况给出实验成绩,满分20分。
三、实验教材及参考书
《数据结构》严蔚敏清华大学出版社2003
《数据结构算法实现及解析》高一凡西安电子科技大学出版社2002
《数据结构》学习指导与训练蒋盛益中国水利水电出版社2003
《数据结构习题与解析—A级》(第3版)李春葆清华大学出版社2006
实验一顺序表的创建与操作
实验目的:
1.掌握顺序表的逻辑结构、存储结构
2.熟悉对线性表的一些基本操作
3.掌握顺序表的创建、插入、删除、查找、等算法
实验内容:
建立一个顺序表。
条件:
顺序表中元素的数据设定为整型数,创建的结束条件自己定义(如:
以数字0做为结束条件或事先约定线性表的元素个数亦可)。
要求:
建立完顺序表之后,再把表中所有数据元素在屏幕上显示出来,插入元素和删除元素后都需要将链表的数据元素在屏幕上显示出来。
实验学时:
2学时
实验步骤:
1.进入C语言开发环境;
2.根据实验内容和要求编写程序;
3.调试程序;
4.运行程序;
5.生成报告。
实验二单链表的创建与操作
实验目的:
1.掌握单链表的逻辑结构、存储结构
2.熟悉对线性表的一些基本操作
3.掌握单链表的创建、插入、删除、查找、求链表的长度等算法
实验内容:
利用单链表的插入操作建立一个带头结点的单链表。
条件:
链表中结点的数据域设定为整型数,创建的结束条件自己定义(如:
以数字0做为结束条件或事先约定线性表的元素个数亦可)。
要求:
建立完单链表之后,再把表中所有数据元素在屏幕上显示出来,插入元素和删除元素后都需要将链表的数据元素在屏幕上显示出来。
提示:
表头插入算法和表尾插入算法任选其一。
实验学时:
2学时
实验步骤:
1.进入C语言开发环境;
2.根据实验内容和要求编写程序;
3.调试程序;
4.运行程序;
5.生成报告。
实验三折半查找
实验目的:
1.熟悉几种查找方法并了解它们的优缺点;
2.掌握折半查找方法。
3.对实际查找问题学会选用一种合适的查找算法求解
实验内容:
设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用折半查找,(根据教材中的算法编写程序),注意查找关键字62是的比较次数是多少次(根据算法手算也可,但必须计算出来)。
实验学时:
2学时
实验步骤:
1.进入C语言开发环境;
2.根据实验内容和要求编写程序;
3.调试程序;
4.运行程序;
5.生成报告。
实验四冒泡排序
实验目的:
1.熟悉几种排序方法并了解它们的优缺点
2.根据实际排序问题能够选用一种合适的排序算法求解
实验内容:
内容:
设一组初始记录关键字序列为(Q,H,C,Y,P,A,M,S,R,D,F,X),用冒泡排序方法实现对这组组数据的排序,并打印排序前和排序后结果(手工分析第一趟冒泡排序结束后的结果是什么,务必完成)。
提示:
采用改进方法来做,设置两个常量用来标志算法是否可以结束。
实验学时:
2学时
实验步骤:
1.进入C语言开发环境;
2.根据实验内容和要求编写程序;
3.调试程序;
4.运行程序;
5.生成报告。
实验一参考程序:
#include"stdio.h"
#defineTRUE1
#defineFALSE0
#defineOK1
#defineERROR0
#defineINFEASIBLE-1
#defineOVERFLOW-2
#defineLIST_MAX_LENGTH50
#defineLIST_INIT_SIZE50
#defineLISTINCREMENT10
typedefstruct{
int*elem;
intlength;
intlistsize;
}SqList;
SqListL;
typedefintStatus;
StatusInitList_SqList(SqList*L)
{/*构造一个空顺序表*/
L->elem=(int*)malloc(LIST_MAX_LENGTH*sizeof(int));
if(!
L->elem)exit(OVERFLOW);/*存储分配失败*/
L->length=0;/*空表长度为0*/
L->listsize=LIST_INIT_SIZE;/*初始存储容量*/
returnOK;/*初始存储容量*/
}
StatusCreateList_Sq(SqList*L,intn)
{inti;
/*L.elem=(int*)malloc(LIST_INIT_SIZE
*sizeof(int));
if(!
L.elem)exit(OVERFLOW);*/
L->length=n;
printf("inputtheprimarylist:
\n");
for(i=0;i
printf("theprimarylistis:
\n");
for(i=0;i
L->length=n;
printf("\n");
getch();
}
StatusListInsert_sq(SqList*L,inti,inte)
{/*向顺序表中插入元素*/
int*p,*q,*newbase;
if(i<1||i>L->length+1)returnERROR;
if(L->length>=L->listsize)
{
newbase=(int*)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(int));
if(!
L->elem)exit(OVERFLOW);
L->elem=newbase;
L->listsize+=LISTINCREMENT;
}
q=&(L->elem[i-1]);
for(p=&(L->elem[L->length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L->length;
printf("theinsertedlistis:
\n");
for(i=0;i
printf("\n");
getch();
returnOK;
}
StatusListDelete_sq(SqList*L,inti)
{
SqList*p,*q;
intlength;
length=L->length;
if(i<1||i>L->length)returnERROR;
p=&(L->elem[i-1]);
q=L->elem+length-1;/*表尾*/
for(++p;p<=q;++p)*(p-1)=*p;
--L->length;
printf("thedeletedlistis:
\n");
for(i=1;i<=L->length;i++)
printf("%4d",L->elem[i-1]);
printf("\n");
getch();
returnOK;
}
main()
{
inti;
intn=10;
InitList_SqList(&L);
CreateList_Sq(&L,n);
ListInsert_sq(&L,5,50);
ListDelete_sq(&L,n);
printf("\n");
getch();
}
实验二参考程序:
#include"stdio.h"
#defineERROR-1
#defineOK1
#defineNULL0
typedefintStatus;
typedefstructLNode
{
intdata;
structLNode*next;
}LNode,*LinkList;
LinkListL;
/*建立一个链表*/
voidCreateList_L(LinkListL,intn)
{LinkListp;
inti;
/*L=(LinkList)malloc(sizeof(LNode));*/
L->next=NULL;
for(i=n;i>0;--i)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=L->next;L->next=p;
}
printf("\nthelinklistis:
\n");
p=L->next;
while(p)
{
printf("%5d",p->data);
p=p->next;
}
printf("\n");
}
/*从链表中取元素*/
StatusGetElem_L(LinkListL,inti,int*e)
{intj;
LinkListp;
p=L->next;j=1;
while(p&&jnext;++j;}
if(!
p||j>i)returnERROR;
*e=p->data;
returnOK;
}
/*插入一个元素*/
StatusListInsert_L(LinkListL,inti,inte)
{intj;
LinkListp,s;
p=L;j=0;
while(p&&j
if(!
p||j>i-1)returnERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
printf("\nthenewlinklistis:
\n");
p=L->next;
while(p)
{
printf("%5d",p->data);
p=p->next;
}
printf("\n");
returnOK;
}
/*删除一个元素*/
StatusListDelete_L(LinkListL,inti,int*e)
{intj;
LinkListp,q;
p=L;j=0;
while(p->next&&j
if(!
(p->next)||j>i-1)returnERROR;
q=p->next;p->next=q->next;
*e=q->data;free(q);
printf("\nthedeletedlinklistis:
\n");
p=L->next;
while(p)
{
printf("%5d",p->data);
p=p->next;
}
printf("\n");
returnOK;
}
/*查找*/
intLinkLocate_L(LinkListL,intx)
{inti;LinkListp;
p=L->next;i=1;
while(p!
=NULL&&p->data!
=x)
{p=p->next;i++;}
if(!
p)
{printf("Notfound!
\n");
return(0);
}
else
{printf("\ni=%d\n",i);return(i);}
}
/*求链表长度*/
intLinkLength_L(LinkListL)
{intj;LinkListp;
p=L->next;j=0;
while(p){p=p->next;j++;}
return(j);
}
main()
{
inti,n=10,e,length,locate;
LNodeL;
CreateList_L(&L,n);
i=3;
GetElem_L(&L,i,&e);
printf("the%dthdataisgotten:
%d\n",i,e);
e=40;
ListInsert_L(&L,i,e);
length=LinkLength_L(&L);
printf("thelengthofthenewlinklistis%d.\n",length);
ListDelete_L(&L,i,&e);
printf("the%dthdataisdeleted,itis%d.\n",i,e);
e=8;
locate=LinkLocate_L(&L,e);
printf("thedata%disthe%dthinthelinklist.\n",e,locate);
getch();
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 指导书 专科