数据结构实验报告-线表.doc_第1页
数据结构实验报告-线表.doc_第2页
数据结构实验报告-线表.doc_第3页
数据结构实验报告-线表.doc_第4页
数据结构实验报告-线表.doc_第5页
全文预览已结束

下载本文档

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

文档简介

课程名称数据结构 实验名称线性表的操作 实验日期班 级计科 姓 名 学号 仪器编号实验报告要求 1.实验目的 2.实验要求 3.实验步骤 4.程序清单 5.运行情况 6.流程图 7.实验体会 实验目的:实验目的: 熟悉线性表的定义和基本操作; 掌握线性表的顺序存储结构设计与基本操作的实现。 实验任务与要求: 定义线性表的顺序存储表示; 基于所设计的存储结构实现线性表的基本操作; 编写一个主程序对所实现的线性表进行测试; 线性表的应用:编程实现顺序表的合并 实验内容:1、 运行以下程序,理解静态分配顺序存储结构的线性表的下列基本操作。 (1)初始化顺序表 (2)创建顺序表 (3)判断空表 (4)求顺序表长度 (5)输出顺序表 (6)取顺序表位置i的元素值 (7)在顺序表中查找值为e的元素位置 (8)向顺序表中插入一个元素 (9)从顺序表中删除一个元素2、采用书上第22页定义的线性表动态分配顺序存储结构,编程实现书中算法2.3、算法2.4和算法2.5。 提示:要实现算法2.4和2.5,必须先创建n个数据元素的顺序表,另外输出顺序表的操作也是必要的。 3、采用线性表动态分配顺序存储结构,实现顺序表的合并操作:设有线性表LA和LB,试设计算法将LA和LB归并为新的线性表LC;设线性表L1和L2中的数据元素为整数,且均已按值非递减有序排列,要求L3中的数据元素也按值非递减有序排列。程序清单:1、略2、#include#include#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define ERROR 0#define OK 1typedef int ElemType;typedef structint *elem;int length;int listsize;SqList;int InitList_Sq(SqList &L)L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!L.elem) return ERROR;L.length=0;L.listsize=LIST_INIT_SIZE;return OK;void CreateList_Sq(SqList &L,int n)int i;printf(输入%d个元素:n,n);for(i=0;in;i+)scanf(%d,&L.elemi);L.length=n;void DispList_Sq(SqList L)int i;if (L.length=0) return;for(i=0;iL.length;i+)printf(%d ,L.elemi);printf(n);int ListInsert_Sq(SqList &L,int i,ElemType e)ElemType *newbase;int *p,*q;if(iL.length+1) return ERROR;if(L.length=L.listsize)newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase) return ERROR;L.elem=newbase;L.listsize+=LISTINCREMENT;q=&(L.elemi-1);for(p=&(L.elemL.length-1);p=q;-p)*(p+1)=*p;*q=e;+L.length;return OK;int ListDelete_Sq(SqList &L,int i,ElemType &e)int *p,*q;if (iL.length) return ERROR;p=&(L.elemi-1);e=*p;q=L.elem+L.length-1;for(+p;p=q;+p)*(p-1)=*p; -L.length;return OK;void main()ElemType e,a,n,x,y;SqList L;InitList_Sq(L);printf(输入元素个数n:n);scanf(%d,&n);CreateList_Sq(L,n); printf(输出顺序表所有元素:n);DispList_Sq(L);printf(插入元素的位置:);scanf(%d,&x);printf(插入的元素为: );scanf(%d,&a);printf(在顺序表第%d个位置插入%dn,x,a);ListInsert_Sq(L,x,a);printf(输出插入操作后顺序表所有元素!n);DispList_Sq(L); printf(删除元素的位置:);scanf(%d,&y);printf(删除顺序表第%d个位置的元素:n,y);ListDelete_Sq(L,y,e);printf(输出删除操作后顺序表所有元素:n);DispList_Sq(L);3、#include#include#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define ERROR 0#define OK 1typedef int ElemType;typedef structint *elem;int length;int listsize;SqList;int InitList_Sq(SqList &L)L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!L.elem) return ERROR;L.length=0;L.listsize=LIST_INIT_SIZE;return OK;void CreateList_Sq(SqList &L,int n)int i;printf(输入%d个元素:n,n);for(i=0;in;i+)scanf(%d,&L.elemi);L.length=n;void DispList_Sq(SqList L)int i;if (L.length=0) return;for(i=0;iL.length;i+)printf(%d ,L.elemi);printf(n);void MergeList_Sq(SqList La,SqList Lb,SqList &Lc)int *pa,*pb,*pc,*pa_last,*pb_last;pa=La.elem;pb=Lb.elem; Lc.listsize=Lc.length=La.length+Lb.length;pc=Lc.elem=(ElemType*)malloc(Lc.listsize*sizeof(ElemType);if(!Lc.elem) return;pa_last=La.elem+La.length-1;pb_last=Lb.elem+Lb.length-1;while(pa=pa_last&pb=pb_last)if(*pa=*pb)*pc+=*pa+;else*pc+=*pb+;while(pa=pa_last)*pc+=*pa+;while(pb=pb_last)*pc+=*pb+;void main()int a,b;SqList La,Lb,Lc;InitList_Sq(La);InitList_Sq(Lb);InitList_Sq(Lc);printf(输入La元素个数a:n);scanf(%d,&a);CreateList_Sq(La,a);printf(输入Lb元素个数b:n);scanf(%d,&b);CreateList_Sq(Lb,b); prin

温馨提示

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

评论

0/150

提交评论