数据结构线性表的实现试验报告2.doc_第1页
数据结构线性表的实现试验报告2.doc_第2页
数据结构线性表的实现试验报告2.doc_第3页
数据结构线性表的实现试验报告2.doc_第4页
数据结构线性表的实现试验报告2.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

实验报告(2)实验名称线性表的实现同组人姓名XXX实验性质 基本操作 验证性 综合性 设计性实验日期2011.03.20实验成绩教师评价:实验预习 实验操作 实验结果 实验报告 其它 教师签名:1.目的要求:1) 熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现;2)以线性表的各种操作(建立、插入、删除等)的实现为重点;3)通过本次实习帮助学生加深对高级语言C语言的使用(特别是函数参数、指针类型、链表的使用)。认真阅读和掌握本实验的参考程序,上机运行本程序, 保存和打印出程序的运行结果,并结合程序进行分析。按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果。1. 实验内容: 1)编程实现线性表两种存储结构中的基本操作的实现(线性表的创建、插入、删除和查找),并设计一个主菜单完成各个功能的调用。三、主要设备及软件PC机1台, VC 6.0 平台四、实验流程、操作步骤或核心代码、算法片段顺序表的关键代码Status InitList_sq(SqList &L) L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!L.elem) exit(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE ; return OK;Status ListInsert_sq(SqList &L,int i,ElemType e) ElemType *newbase;int j;if(i=L.length+1) return ERROR;if(L.lengthL.listsize)newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase) exit(OVERFLOW);L.elem=newbase;L.listsize+=LISTINCREMENT;for(j=L.length-1;j=i-1;j-)L.elemj+1=L.elemj;L.elemi-1=e;+L.length;return OK;Status GetElem(SqList L,int i,ElemType &e)if(L.length=0) exit(OVERFLOW); else e=L.elemi-1; return OK; Status ListTraverse(SqList L)int i;if(L.length=0) exit(OVERFLOW); else for(i=0;iL.length;i+)printf(%d ,L.elemi); printf(nn); return OK;Status LocateElem(SqList L,ElemType e) int i=0; while(i=L.length&L.elemi!=e) +i; if(iL.length) return i+1; else return 0;Status PriorElem(SqList L,int i,ElemType &e)if(LocateElem(L,i)=0) return ERROR; else if(LocateElem(L,i)=1) printf(第一个元素没有前驱n); else e=L.elemLocateElem(L,i)-2;printf(元素%d的前驱是%dnn,i,e); return OK;Status NextElem(SqList L,int i,ElemType &e) if(LocateElem(L,i)=0) return ERROR; else if(LocateElem(L,i)=L.length) printf(最后一个元素没有后继n); else e=L.elemLocateElem(L,i);printf(元素%d的后继是%dnn,i,e); return OK;Status ListDelete(SqList &L,int i,ElemType &e)int j;if(iL.length) return ERROR;e=L.elemi-1;for(j=i;jnext=NULL; for(i=n;i0;-i) p=(LinkList)malloc(1*sizeof(LNode); printf(请输入一个链表元素值n); scanf(%d,&p-data); p-next=L-next; L-next=p; return OK;Status ListTraverse(LinkList L)LinkList p; p=L-next;while(p)printf(%d ,p-data);p=p-next;printf(nn);return OK;ListInsert(LinkList &L,int i,ElemType e)LinkList p,s; int j=0;p=L;while(p&jnext;+j;if(!p|ji-1)return ERROR;s=(LinkList)malloc(1*sizeof(LNode);s-data=e;s-next=p-next;p-next=s;return OK;Status LocateList(LinkList L,ElemType e)LinkList p;p=L-next;int i=1;while(p)if(p-data=e)return i; else p=p-next; i+;return ERROR;Status GetList(LinkList L,int i,ElemType &e)LinkList p;p=L-next;int j=1;while(p&jnext;+j;if(!p|ji) return ERROR;e=p-data;return OK;Status PriorList(LinkList L,ElemType cur_e,ElemType &e)LinkList p,q;int j=0;p=L;while(p-next) q=p;p=p-next;j+;if(p-data=cur_e)if(j=1)return OVERFLOW;elsee=q-data;return OK; return ERROR; Status NextList(LinkList L,ElemType cur_e,ElemType &e)LinkList p,q;p=L;while(p-next)p=p-next;if(p-data=cur_e)q=p-next;if(q)e=q-data;return OK;else return OVERFLOW; return ERROR;Status ListDelete(LinkList L,int i,ElemType &e)LinkList p,q;int j=0;p=L;while(p-next&jnext;+j;if(!(p-next)|ji-1) return ERROR;q=p-next;p-next=q-next;e=q-data;free(q);return OK; Status Listlength(LinkList L) in

温馨提示

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

评论

0/150

提交评论