数据实验报告.docVIP

  • 91
  • 0
  • 约3.19万字
  • 约 48页
  • 2019-09-04 发布于湖南
  • 举报
南阳理工学院 数据结构上机实验指导书 (2011版) 软件学院·软件工程教研室 2011.3 目 录 TOC \o 1-1 \h \u 实验1 线性表应用 2 实验2 栈和队列的应用 2 实验3 线性表应用 3 实验4 图论及其应用 3 实验5 查找 4 实验6 排序 4 实验1 线性表应用 一、实验目的 了解和掌握线性表顺序存储和链式存储在计算机中的表示,基本操做在计算机中的实现。 能够利用线性表结构对实际问题进行分析建模,利用计算机求解。 能够从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其适用场合。 二、实验内容及步骤 利用程序设计语言分别实现顺序表和链表的抽象数据类型。 掌握程序分文件(头文件和实现文件)书写的方式。 分别用顺序表和链表实现课本算法2.2:合并两个非递减有序序列,并对其时间性能做出分析。 顺序表的非递减数列合并 #includestdio.h /*包含输入输出头文件*/ #define ListSize 100 typedef int DataType; typedef struct { DataType list[ListSize]; int length; }SeqList; void InitList(SeqList *L) /*将线性表初始化为空的线性表只需要把线性表的长度length置为0*/ { L-length=0; /*把线性表的长度置为0*/ } int ListEmpty(SeqList L) /*判断线性表是否为空,线性表为空返回1,否则返回0*/ { if(L.length==0) /*判断线性表的长度是否为9*/ return 1; /*当线性表为空时,返回1;否则返回0*/ else return 0; } int GetElem(SeqList L,int i,DataType *e) /*查找线性表中第i个元素。查找成功将该值返回给e,并返回1表示成功;否则返回-1表示失败。*/ { if(i1||iL.length) /*在查找第i个元素之前,判断该序号是否合法*/ return -1; *e=L.list[i-1]; /*将第i个元素的值赋值给e*/ return 1; } int LocateElem(SeqList L,DataType e) /*查找线性表中元素值为e的元素,查找成功将对应元素的序号返回,否则返回0表示失败。*/ { int i; for(i=0;iL.length;i++) /*从第一个元素开始比较*/ if(L.list[i]==e) return i+1; return 0; } int InsertList(SeqList *L,int i,DataType e) /*在顺序表的第i个位置插入元素e,插入成功返回1,如果插入位置不合法返回-1,顺序表满返回0*/ { int j; if(i1||iL-length+1) /*在插入元素前,判断插入位置是否合法*/ { printf(插入位置i不合法!\n); return -1; } else if(L-length=ListSize) /*在插入元素前,判断顺序表是否已经满,不能插入元素*/ { printf(顺序表已满,不能插入元素。\n); return 0; } else { for(j=L-length;j=i;j--) /*将第i个位置以后的元素依次后移*/ L-list[j]=L-list[j-1]; L-list[i-1]=e; /*插入元素到第i个位置*/ L-length=L-length+1; /*将顺序表长增1*/ return 1; } } int DeleteList(SeqList *L,int i,DataType *e) { int j; if(L-length=0) { printf(顺序表已空不能进行删除!\n); return 0; } else if(i1||iL-length) { printf(删除位置不合适!\n); return -1; } else { *e=L-list[i-1]; for(j=i;j=L-le

文档评论(0)

1亿VIP精品文档

相关文档