数据结构实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》实验报告

专业惠普测试

班级142

姓名李斌

学号1408090221

学期 3

指导老师刘勇

成绩:

教师评语:

数据结构上机实验报告

学号:1408090221 姓名:李斌所在系:惠普测试班级:142

实验名称:线性结构基本算法的实现实验日期

实验指导教师刘勇实验机房

------------------------------------------------------------------------------------------------------

1.实验目的:

(1)掌握线性表顺序存储结构的基本操作:插入、删除、查找;

(2)掌握线性表链式结构的基本操作:插入、删除、合并等运算;

(3)掌握栈和队列基本运算的算法;

(4)掌握稀疏矩阵的压缩存储的算法。

2. 实验内容:

(1)实现顺序表的创建、插入、删除和查找的操作;

(2)实现单链表插入、删除、合并的操作;

(3)实现2个有序线性表的合并;

(4)利用顺序栈实现括号匹配的算法;

(5)实现顺序队列各种基本运算的算法;

(6)实现链栈各种基本运算的算法;(选做)

(7)实现链队列各种基本运算的算法;(选做)

(8)实现稀疏矩阵压缩存储的算法。

3.算法设计(编程思路或流程图或源代码)

内容:

1、顺序表的插入和删除

2、有序单链表的合并

3、数制转换的算法实现

1.

//顺序表的插入和删除

#include

//#include

#include

#define LIST_INIT_SIZE 100

#define LISTINCREMENT 10

#define TURE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

typedef int ElemType;

typedef int Status;

typedef struct

{

ElemType *elem;

int length;

int listsize;

}SqList;

Status InitList_Sq(SqList *L)

{

// printf("test~~\n");

L->elem =(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));

if(!L->elem) return OVERFLOW;

L->length=0;

L->listsize=LIST_INIT_SIZE;

return OK;

}

Status CreatList_Sq(SqList *L,int n)

{

int i;

L->length=n;

//printf("请输入%d个整数:",n);//3

for(i=0;i

{

printf("请输入第%d个整数: ",i+1);//4 i+1

scanf("%d",&L->elem[i]);

}

return OK;

}

void TraverList_Sq(SqList *L)

{

int i;

printf("顺序表的长度为:%d\n",L->length);

printf("顺序表中的元素依次为:");

for(i=0;ilength;i++)

{

printf("%5d",L->elem[i]);

}

printf("\n");

}

int ListInsert_Sq(SqList *L,int i,int e)

{

int *newbase,*q,*p;

if(i<1||i>L->length+1)

{

printf("由于插入位置不合法导致插入操作失败\n");

return ERROR;

}

else

{

if(L->length>=L->listsize)

{

newbase=(int *)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(int));

if(!newbase)return OVERFLOW;

L->elem=newbase;

L->length=+LISTINCREMENT;

}

q=&(L->elem[i-1]);

for(p=&L->elem[L->length];p>=q;p--)

*(p+1)=*p;

*q=e;

++L->length;

return OK;

}

}

int DeleteList_Sq(SqList *L,int i,int e)

{

int x,*q,*p;

if(i<1||i>L->length)

{

printf("由于删除位置不合法无法进行删除\n");

return ERROR;

}

else if(L->length==0)

{

printf("由于是空表无法删除\n");

return OVERFLOW;

}

else

{

q=&(L->elem[i-1]);

e=L->elem[i-1];

相关文档
最新文档