数据结构实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;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];