预览加载中,请您耐心等待几秒...
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
实验一线性表的顺序实现一、实验目的:(1)掌握线性表的顺序存储结构的定义及C语言实现。(2)掌握线性表在顺序存储结构即顺序表中的各种基本操作。二、实验要求:(1)复习课本中有关线性表的知识;(2)用C语言完成算法和程序设计并上机调试通过;(3)撰写实验报告,给出算法思路或流程图和具体实现(源程序)、算法分析结果(包括时间复杂度、空间复杂度以及算法优化设想)、输入数据及程序运行结果(必要时给出多种可能的输入数据和运行结果)。三、实验内容1、顺序表的建立2、顺序表的插入3、顺序表的删除4、顺序表的遍历#include<stdio.h>#include"malloc.h"#include<stdlib.h>#defineLIST_INIT_SIZE100#defineLISTINCREMENT10#defineOVERFLOW-2#defineok1#defineerror0typedefintElemtype;typedefintStatus;typedefstruct{Elemtype*elem;intlength;intlistsize;}SqList;StatusInitList_Sq(SqList*L){L->elem=(Elemtype*)malloc(LIST_INIT_SIZE*sizeof(Elemtype));//100*单个的字节数。if(!L->elem)exit(OVERFLOW);L->length=0;L->listsize=LIST_INIT_SIZE;returnok;}StatusListInsert_Sq(SqList*L,inti,Elemtypee){Elemtype*newbase,*q,*p;if(i<1||i>L->length+1)returnerror;if(L->length>=L->listsize){newbase=(Elemtype*)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(Elemtype));if(!newbase)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;returnok;}StatusListDelete_Sq(SqList*L,inti,Elemtype*e){Elemtype*q,*p;if((i<1)||(i>L->length))returnerror;p=&(L->elem[i-1]);*e=*p;q=L->elem+L->length-1;for(++p;p<=q;++p)*(p-1)=*p;--L->length;returnok;}main(){SqList*L;inti;L=(SqList*)malloc(sizeof(SqList));InitList_Sq(L);for(i=0;i<10;i++)scanf("%3d",L->elem+i);L->length=10;for(i=0;i<L->length;i++)printf("%3d",L->elem[i]);printf("\n");ListInsert_Sq(L,3,25);for(i=0;i<L->length;i++)printf("%3d",L->elem[i]);printf("\n");ListDelete_Sq(L,8,&i);for(i=0;i<L->length;i++)printf("%3d",L->elem[i]);printf("\n");}实验二线性表的链式实现一、实验目的:(1)掌握线性表的链式存储结构——单链表的定义及C语言实现。(2)掌握线性表在链式存储结构——单链表中的各种基本操作。二、实验要求:(1)复习课本中有关线性表的知识;(2)用C语言完成算法和程序设计并上机调试通过;(3)撰写实验报告,给出算法思路或流程图和具体实现(源程序)、算法分析结果(包括时间复杂度、空间复杂度以及算法优化设想)、输入数据及程序运行结果(必要时给出多种可能的输入数据和运行结果)。三、实验内容1、单链表的建立2、单链表的插入3、单链表的删除4、单链表的合并5、删除单链表中的重复值实验三栈(队列)的实现一、实验目的:(1)熟悉栈(队列)的特点及栈(队列)的基本操作,如入栈、出栈(