数据结构实验探索.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
姓名:XXX班级:计科XXX班学号:XXXXXX老师:XXX2015.05.24目录实验1:线性表及其应用2实验2:栈和队列9实验3:数组15实验4:二叉树及其应用23实验5:图的应用27实验6:查找、排序31一、线性表及其应用姓名:XXX学号:XXXXXXX专业班级:计科XXX班实验目的:帮助学生掌握线性表的基本操作在顺序和链表这两种存储结构上的实现,尤以链表的操作和应用作为重点。问题描述:构造一个空的线性表L。在线性表L的第i个元素之前插入新的元素e;在线性表L中删除第i个元素,并用e返回其值。实验要求:文法是一个四元分别利用顺序和链表存储结构实现线性表的存储,并设计出在不同的存储结构中线性表的基本操作算法。在实验过程中,对相同的操作在不同的存储结构下的时间复杂度和空间复杂度进行分析。算法分析:1.插入操作:输入数据:L = () ListInsert (L, 1, k),正确结果:L = (k)输入数据:L = (EHIKMOP)ListInsert (L, 9, t),正确结果:return ERROR; L = (EHIKMOP)输入数据:L = (ABCEHKNPQTU)ListInsert(L, 4, u),正确结果: L = (ABCuEHKNPQTU)2.删除操作:输入数据:L = ()ListDelete (L, 1, e)正确结果:ERROR, L = ()输入数据:L = (DEFILMNORU) ListDelete_Sq(L, 5, e)正确结果: L = (DEFIMNORU), e=L输入数据:L = (CD) ListDelete_Sq(L, 1, e)正确结果: L = (D), e = C3.如线性表有n个结点,对两种存储结构下插入和删除的时间复杂度进行分析。实验内容和过程:1.用学生选择的语言,设计出线性表的顺序和链表存储结构;2.设计出这两种存储结构下的线性表的插入、删除算法;3.用所选择的语言实现算法;4.测试程序,并对不同存储结构下的算法分析。实验结果:顺序存储C程序:#include stdio.h#include malloc.htypedef int elemtype;typedef int status;#define ERROR -1#define OK 1#define OVERFLOW 2008#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef struct{elemtype *elem;int length;int listsize;}sqlist;status InitList_Sq(sqlist *L){//构造一个空的线性表Lelemtype *a=0;a=(elemtype *)malloc(LIST_INIT_SIZE*sizeof(elemtype));L-elem=a;if(!(*L).elem)return OVERFLOW;(*L).listsize=LIST_INIT_SIZE;(*L).length=0;return OK;}status List_Insert(sqlist *L,int i,elemtype e){//在第i个元素之前插入元素eelemtype * p=0; elemtype *q=0;elemtype * newbase=0;if(i1||i(*L).length+1) return ERROR;if((*L).length=(*L).listsize){newbase=(elemtype *)realloc((*L).elem,((*L).listsize+LISTINCREMENT)*sizeof(elemtype));if(!newbase)return(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;return OK;}status GetElem(sqlist *L,int i,elemtype *e){(*e)=(*L).elem[i-1];return OK;}status List_Delete(sqlist *L,int i){//删除线性表的第i个元素if(i1||i(*L).length) return ERROR;elemtype *p; elemtype *q;p=((*L).elem[i]);q=p-1;int num;for(num=1;num=((*L).length-i);num

文档评论(0)

希望之星 + 关注
实名认证
文档贡献者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档