数据结构实验2.doc

上传人:11****ws 文档编号:3698131 上传时间:2019-07-06 格式:DOC 页数:8 大小:68KB
下载 相关 举报
数据结构实验2.doc_第1页
第1页 / 共8页
数据结构实验2.doc_第2页
第2页 / 共8页
数据结构实验2.doc_第3页
第3页 / 共8页
数据结构实验2.doc_第4页
第4页 / 共8页
数据结构实验2.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、数据结构实验报告实验序号:2 实验项目名称:顺序表的操作学 号 姓 名专业、班级实验地点 指导教师 实验时间一、实验目的及要求1.掌握线性表的顺序存储类型;2.熟练掌握顺序表的基本操作和具体的函数实现。二、实验设备(环境)及要求微型计算机;windows 操作系统;Microsoft Visual Studio 6.0 集成开发环境。三、实验内容与步骤1.设 A、B 均为用数组实现的 List 类型的顺序表,试设计一个函数Alternate(A,B) ,从表 A 中第 1 个元素开始,交替地用表 A 和表 B 中元素组成一个新表。2.顺序表表示和实现线性表的如下:# define LIST_I

2、NIT_SIZE 10# define LISTINCREMENT 5typedef structElemType *elem;int length ;int ListSize; sqlist;int InitList_sq(sqlist *l) /*initial the list l*/l-elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType);if (!l-elem)printf(“无法分配空间!“);return 1;elsel-length=0;l-ListSize=LIST_INIT_SIZE;printf(“ok“);ret

3、urn 0;void main()sqlist L;InitList_sq(【要求】1、实现顺序表的插入、删除、按值查找等基本操作;2、假设构建的是非递增有序顺序表,设计算法实现从该有序顺序表中删除所有其值重复的元素,使得表中所有元素的值均不同。四、实验结果与数据处理五、分析与讨论通过本次实验了解了线性表的顺序存储结构。实验过程中具体函数的实现遇到了问题,但通过百度与总结前辈的经验解决了。五、教师评语签名:日期:成绩附源程序清单:1.#include #include #define LIST_INIT_SIZE 10 #define LISTINCREMENT 5 typedef int E

4、lemType; typedef struct ElemType *elem; int length ; int ListSize; sqlist; int InitList_sq(sqlist *l) /*initial the list l*/ l-elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType); if (!l-elem) printf(“无法分配空间!“); return 1; else l-length=0; l-ListSize=LIST_INIT_SIZE; printf(“okn“); return 0; void

5、Alternate(sqlist *A,sqlist*B) ElemType i; sqlist list; sqlist *C; C= InitList_sq(C); C-length=A-length+B-length; while(i) if(C-length=C-ListSize) ElemType *newbase; newbase=( ElemType *)realloc(C-elem, (C-ListSize+LISTINCREMENT)*sizeof(ElemType); C-elem=newbase; C-ListSize+=LISTINCREMENT; else break

6、; for(i=0;ilength;i+) C-elem2*i=A-elemi; C-elem2*i+1=B-elemi; for(i=0;ilength;i+) printf(“%d “,C-elemi); void main() ElemType i; sqlist list1,list2,*A,*B; A= B= InitList_sq(A); InitList_sq(B); printf(“请输入 A指向的 5 个整数:n“); for(i=0;ielemi); A-length=i; printf(“请输入 B指向的 5 个整数:n“); for(i=0;ielemi); B-len

7、gth=i; Alternate(A,B); printf(“n“); 2.#include #include #include #define LIST_INIT_SIZE 100#define LISINCREMENT 10#define ElemType int#define Status inttypedef struct SqElemType *elem;int length;int listsize;SqList;Status InitList(SqList *L)L-elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if

8、(!L-elem)return 0;L-length=0;L-listsize=LIST_INIT_SIZE;return 1;/-插入Status ListInsert(SqList *L,int i,ElemType e)int *q,*p;if(iL-length)return 0;if(L-lengthL-listsize) ElemType *newbase=(ElemType*)realloc(L-elem,(LIST_INIT_SIZE+LISINCREMENT)*sizeof(ElemType);if(!newbase)return 0;L-elem=newbase;L-lis

9、tsize+=(LISINCREMENT); q=for(p=p=q;-p)*(p+1)=*p;*q=e;+L-length;return 1;/-删除Status ListDelete(SqList *L,int i,ElemType e)int *p,*q;if(iL-length)return 0;p=e=*p;q=L-elem+L-length-1;for(+p;plength;return 1;/-查找Status LocateElem(SqList *L, ElemType e)/本算法实现查找顺序表中值为 e的元素,如果查找成功,返回元素位序,否则返回 0int i;for(i=

10、0;ilength;i+)if(L-elemi=e)printf(“被查找元素的位置:%2dn“,i+1); return i+1; / 下标为 i的元素值等于 e,返回其位号 i+1elseprintf(“没有该元素!n“); return 0; /退出循环,说明查找失败/-删除重复void DelDouble(SqList *L) int i,j,k; int tmp; if(L-length = 0 )printf(“表空n“); exit (1); i=0; while ( i length ) /循环检测j = i + 1; tmp = L-elemi; while( j lengt

11、h ) /对于每一个 i, 重复检测一遍后续元素if( tmp = L-elemj) /如果相等,删 除此结点,后续元素前移for( k = j+1; k length; k+ ) L-elemk-1 = L-elemk; L-length-; /表最后元素位置 减 1 else j+; i+; int main(void)int i,j,e,lo,temp;SqList *L=(SqList*)malloc(sizeof(SqList);InitList(L);/-输入顺序表printf(“请输顺序表的长度:n“);scanf(“%d“,printf(“请输入顺序表的各个元素:n“);for

12、(i=0;ilength;+i)scanf(“%d“,printf(“输入的顺序表是:n“);for (i=0;ilength;+i)printf(“%d “,L-elemi);printf(“n“);printf(“请输入插入的位置以及节点:n“);/-插入scanf(“%d%d“,ListInsert(L,j,e); printf(“插入后的顺序表为:n“);for (i=0;ilength;+i)printf(“%d “,L-elemi);printf(“n“);printf(“请输入要删除的位置:“);/-删除scanf(“%d“,ListDelete(L,lo,temp);for (i=0;ilength;+i)printf(“%d “,L-elemi);printf(“n“); printf(“输入要查找的值:“); /-查找 scanf(“%d“, i=LocateElem(L,e);printf(“删除重复元素后顺序表为:n“);/- 删除重复DelDouble(L);for (i=0;ilength;+i)printf(“%d “,L-elemi);printf(“n“);free(L);return 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。