数据结构实验报告及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
实验课程:
学生姓名:
学号:
专业班级:
2013年 2 月 25 日
目录
实验1 线性表 (3)
实验2 栈与队列 (11)
实验3 串 (15)
实验4 数组与广义表 (18)
实验5 二叉树的操作 (21)
实验6 图的操作 (25)
实验7 查找的操作 (29)
实验8 排序的操作 (34)
南昌大学实验报告
学生姓名:学号:专业班级:
实验类型:□验证□综合□设计□创新实验日期:2013-4-12 实验成绩:实验1 线性表
一.实验目的
1.熟悉线性表抽象数据类型的表示和实现方法。
2.掌握线性表上的基本操作。
二.实验基本原理
IDE环境中进行C程序开发的基本过程
三.主要仪器设备及耗材
PC微型计算机系统
DOS操作系统或Windows 操作系统
Turbo C 集成开发环境、Visual C++ 开发环境、或其它C语言开发环境。四.实验步骤
1.进入所选择的IDE环境。
2.书写程序源代码。
3.调试程序。
4.验证程序。
五.实验项目
顺序表代码:
linearList.h文件内代码为
#define OK 1
#define ERROR 0
#define TURE 1
#define FALSE 0
typedef int status ;
typedef int ElemType;
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;
status InitList_Sq(SqList **L);
status ListInsert_Sq(SqList *L,int i,ElemType e);
status ListDelete_Sq(SqList *L,int i);
int LocateElem(SqList *L, ElemType e);
LinearList.c文件内部代码
# include
# include"LinearList.h"
status InitList_Sq(SqList **L)
{
*L=(SqList*)malloc(sizeof(SqList));
(**L).elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
(**L).length=0;
(**L).listsize=LIST_INIT_SIZE;
return OK;
}
status ListInsert_Sq(SqList *L,int i,ElemType e)
{
ElemType *newbase,*p,*q;
if (i<1||i>L->length+1)
{
return ERROR;
}
if (L->length>=L->listsize)
{
newbase=(ElemType*)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType));
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++;
return OK;
}
status ListDelete_Sq(SqList *L,int i)
{
ElemType *q,*p;
if (i<1||i>L->length)
{
return ERROR;
}
p=&(L->elem[i]);
for (q=L->elem+L->length-1;p<=q;p++)
{
*(p-1)=*p;
}
L->length--;
return OK;
}
int LocateElem(SqList *L, ElemType e)
{
int i=0;
while (i
if (i>=L->length)
return 0;
else
return i+1;
}
Main.c 文件代码为#include
#include"LinearList.h"
void printfElems(SqList *L)
{
int i;
for ( i = 0; i < L->length; i++)
{
printf("%d ",L->elem[i]);
}
printf("\n");
}
void main()
{
SqList *list;
InitList_Sq(&list);//初始化顺序表
ListInsert_Sq(list,1,10);// 把10插入第一位置
ListInsert_Sq(list,1,9);// 把9插入第一位置
ListInsert_Sq(list,1,8);// 把8插入第一位置
ListInsert_Sq(list,1,7);// 把7插入第一位置
printfElems(list); //打印出所有元素
ListDelete_Sq(list,1);//删除
printf("删除第一个之后\n");
printfElems(list); ////打印出所有元素
printf("第%d个元素是 10",LocateElem(list,10));//查找元素10的位置}