线性表的顺序结构实验_第1页
线性表的顺序结构实验_第2页
线性表的顺序结构实验_第3页
线性表的顺序结构实验_第4页
线性表的顺序结构实验_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计科2012级《数据结构》实验报告二学号:2012091165姓名:刘意天实验名称线性表的顺序存储结构完成时间2014-3-14实验目的掌握线性表的概念,掌握顺序表的概念及其各种运算的原理。通过对线性表的查找、插入和删除算法的实现以加深对线性表的顺序存储结构的理解,为加强线性表在实际中的应用打下基础。用C语言实现并上机调试通过,认真填写实验报告实验内容1.已知某线性表(a1,a2,……an)=(1,2,……,n),利用C语言编程完成以下操作:(1)定义函数initsq_L():创建该线性表的顺序存储结构;(2)定义函数insertsq_L():在第I个数据元素前插入X,I和X均用键盘输入;(3)定义函数deletesq_L():将原顺序表中的Ai删除,I由键盘输入;(4)定义函数printsq_L():输出线性表的内容。提示:该线性表的数据可以是一组学生的成绩。实验要求1.掌握线性表的概念,掌握顺序表的概念及其各种运算的原理。2.通过对线性表的查找、插入和删除算法的实现以加深对线性表的顺序存储结构的理解,为加强线性表在实际中的应用打下基础。3.用C语言实现并上机调试通过,认真填写实验报告实验过程://线性顺序表#include<stdio.h>#include<stdlib.h>#defineLIST_INIT_SIZE100//线性表存储空间的初始分配量#defineLISTINCRESEMENT10//线性表存储空间的分配增量#define OK1#defineERROR0#defineOVERFLOW-2typedefintelemType;//元素类型typedefstruct{ elemType*List;//线性表首地址 intlength;//当前的长度 intlistsize;//当前分配的存储容量,以elemType为单位}SqList;AgainMalloc(SqList*L)//空间不够时重新分配空间的函数{ elemType*newbase;//分配一个临时基址 newbase=(elemType*)realloc(L->List,(L->listsize+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)); if(!L->List)exit(OVERFLOW);//overflow L->length=0;//初始表为空表 L->listsize=LIST_INIT_SIZE;//初始表的存储容量,为LIST_INIT_SIZE个elemType单位 returnOK;}//求表中元素的个数intListLength(SqList*L){ returnL->length;}//遍历顺序表voidTraverseList(SqList*L){ inti; for(i=0;i<L->length;i++) { printf("%d",L->List[i]); printf(""); } return;}//向表头插入元素voidInsertFirst(SqList*L,elemTypee){ inti; if(L->length>=L->listsize) AgainMalloc(L); for(i=L->length-1;i>=0;i--) L->List[i+1]=L->List[i]; L->List[0]=e; L->length++; return;}//向表尾插入元素voidInsertLast(SqList*L,elemTypee){ if(L->length>=L->listsize) AgainMalloc(L); L->List[L->length]=e; L->length++; return;}//在表中第I个位置之前插入新元素eintInsert_Sq(SqList*L,elemTypee,intI){ inti; if(I<1||I>L->length+1)returnERROR; if(L->length>=L->listsize)//存储空间不够,要分配新的空间 AgainMalloc(L); for(i=L->length-1;i>=I-1;i--) L->List[i+1]=L->List[i]; L->List[I-1]=e; L->length++; returnOK;}//查找给出元素的位置,若存在,给出位置(从1开始算);若不存在,返回-1intSearch(SqList*L,elemTypee){ inti; for(i=0;i<L->length;i++) { if(L->List[i]==e) returni+1; } return-1;}//删除第I个元素,并返回其值elemTypeDeleteElem(SqList*L,intI){ inti; elemTypetemp; if(I<1||I>L->length) { printf("I值越界\n"); exit(1); } temp=L->List[I-1]; for(i=I;i<L->length;i++) L->List[i-1]=L->List[i]; L->length--; returntemp;}//判断线性表是否为空,为空返回1,不为空返回0intisEmpty(SqList*L){ if(L->length==0) return1; else return0;}main(){ SqListList1; InitList_Sq(&List1); printf("线性表是否为空?%d\n",isEmpty(&List1)); printf("现在插入一些元素....\n"); Insert_Sq(&List1,15,1);//第1个元素前插入元素15 InsertFirst(&List1,4);//表头插入4 InsertFirst(&List1,10);//表头插入10 InsertLast(&List1,13);//表尾插入13 InsertLast(&List1,20);//表尾插入20 printf("线性表的当前长度为:\n"); printf("%d\n",ListLength(&List1)); printf("线性表的所有元素为:"); TraverseList(&List1); printf("\n"); printf("查找元素13:%d\n",Search(&List1,13)); printf("查找元素77:%d\n",Search(&List1,77)); printf("删

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论