欢迎来到天天文库
浏览记录
ID:28473743
大小:80.00 KB
页数:5页
时间:2018-12-10
《线性表的顺序结构实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、计科2012级《数据结构》实验报告二学号:2012091165姓名:刘意天实验名称线性表的顺序存储结构完成时间20'4'3-14实验目的1.掌握线性表的概念,掌握顺序表的概念及其各种运算的原理。2.通过对线性表的查找、插入和删除算法的实现以加深对线性表的顺序存储结构的理解,为加强线性表在实际屮的应用打下基础。3.用C语言实现并上机调试通过,认真填写实验报告实验内容1.已知某线性表(al,a2,……an)=(1,2,……,n),利用C语言编程完成以下操作:(1)定义函数initsq_L():创建该线性表的顺序存储结构;(2)定义函数insertsq_
2、L():在第I个数据元素前插入X,I和X均用键盘输入;(3)定义函数deletesq_L():将原顺序表中的Ai删除,I由键盘输A;(4)定义函数printsq_L():输出线性表的内容。提示:该线性表的数据可以是一组学生的成绩。实验要求1.掌握线性表的概念,掌握顺序表的概念及其各种运算的原理。2.通过对线性表的查找、插入和删除算法的实现以加深对线性表的顺序存储结构的理解,为加强线性表在实际中的应用打下基础。3.用C语言实现并上机调试通过,认真填写实验报告实验过程://线性顺序表#include#include
3、#defineLIST_INIT_SIZE100//线性表存储空间的初始分配#defineLISTINCRESEMENT10//线性表存储空间的分配增量#defineOK1#defineERROR0#defineOVERFLOW-2typedefintelemType;//元素类型typedefstruct{elemType*List;//线性表首地址intlength;//当前的长度intlistsize;//当前分配的存储界量,以elemType为单位}SqList;AgainMalloc(SqList*L)/冷间不够吋熏新分配'今:间的函数{
4、elemType*newbase;//分配一个临时基址newbase=(elemType*)realloc(L->List,(L->list$ize+LISTINCRESEMENT)*sizeof(elemType));if(!newbase)exit(OVERFLOW);L-〉List=newbase;L->listsize+=LISTINCRESEMENT;}//初始化一个空的线性表intInitList_Sq(SqList*L){L->List=(elemType*)malloc(LIST_INIT_SIZE*sizeof(elemType)
5、);if(!L-〉List)exit(OVERFLOW);//overflowL-〉length=O;//初始表为空表L-〉listsize=LIST_INIT_SIZE;//初始表的存储容量,力LIST_INIT_SIZE个elemType单位returnOK;}//求表屮元素的个数intListLength(SqList*L){returnL->length;}//遍历顺序表voidTraverseList(SqList*L){inti;for(i=0;i6、f("");}return;}//向表头插入元素voidInsertFirst(SqList*L,elemTypee){inti;if(L->length>=L->listsize)AgainMalloc(L);for(i=L-〉length-1;i>=0;i~)L->List[i+l]=L->List[i];L->List[0]=e;L->length++;return;}//向表犀插入元素voidInsertLast(SqList*L,elemTypee){if(L->length>=L->listsize)AgainMalloc(L);L->7、List[L->lengthJ=e;L-〉length++;return;}//在表屮第I个位置之前插入新元素eintInsert一Sq(SqList*L,elemTypee,intI){inti;if(I8、9、I>L->length+l)returnERROR;if(L-〉length〉=L-〉listsize)//存储空间不够,要分配新的空间AgainMalloc(L);for(i=L->length-1;i>=I-l;i—)L->Listfi+ll=L->Listfil;L-〉List[I-l]=e;L-〉length++;returnOK10、;}//查找给出元素的位置,若存在,给出位置(从1开始算):若不存在,返回-1intSearch(SqList*L,ele
6、f("");}return;}//向表头插入元素voidInsertFirst(SqList*L,elemTypee){inti;if(L->length>=L->listsize)AgainMalloc(L);for(i=L-〉length-1;i>=0;i~)L->List[i+l]=L->List[i];L->List[0]=e;L->length++;return;}//向表犀插入元素voidInsertLast(SqList*L,elemTypee){if(L->length>=L->listsize)AgainMalloc(L);L->
7、List[L->lengthJ=e;L-〉length++;return;}//在表屮第I个位置之前插入新元素eintInsert一Sq(SqList*L,elemTypee,intI){inti;if(I8、9、I>L->length+l)returnERROR;if(L-〉length〉=L-〉listsize)//存储空间不够,要分配新的空间AgainMalloc(L);for(i=L->length-1;i>=I-l;i—)L->Listfi+ll=L->Listfil;L-〉List[I-l]=e;L-〉length++;returnOK10、;}//查找给出元素的位置,若存在,给出位置(从1开始算):若不存在,返回-1intSearch(SqList*L,ele
8、
9、I>L->length+l)returnERROR;if(L-〉length〉=L-〉listsize)//存储空间不够,要分配新的空间AgainMalloc(L);for(i=L->length-1;i>=I-l;i—)L->Listfi+ll=L->Listfil;L-〉List[I-l]=e;L-〉length++;returnOK
10、;}//查找给出元素的位置,若存在,给出位置(从1开始算):若不存在,返回-1intSearch(SqList*L,ele
此文档下载收益归作者所有