ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:147.82KB ,
资源ID:8488211      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8488211.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构线性表的顺序存储结构C语言实现.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构线性表的顺序存储结构C语言实现.docx

1、数据结构线性表的顺序存储结构C语言实现数学与信息技术学院20162017(下)学年计科专业2015级数据结构实验报告 1 学号:2015201018 姓名:汪继超实验名称线性表的顺序存储结构完成时间实验目的1 掌握线性表的概念,掌握顺序表的概念及其各种运算的原理。2 通过对线性表的查找、插入和删除算法的实现以加深对线性表的顺序存储结构的理解,为加强线性表在实际中的应用打下基础。3 用C语言实现并上机调试通过,认真填写实验报告实验内容1已知某线性表(a1,a2,an)=(1,2,,n),利用C语言编程完成以下操作:(1)定义函数initsq_L():创建该线性表的顺序存储结构;(2)定义函数in

2、sertsq_L():在第I个数据元素前插入X,I和X均用键盘输入;(3)定义函数deletesq_L():将原顺序表中的Ai删除,I由键盘输入;(4)定义函数printsq_L():输出线性表的内容。提示:该线性表的数据可以是一组学生的成绩。实验要求用C语言实现并上机调试通过,认真填写实验报告。掌握线性表的概念,掌握顺序表的概念及其各种运算的原理。实验过程:#include#include#include#include#define LIST_INIT_SIZE 10#define LISTINCREMENT 10typedef int ElemType; typedef struct E

3、lemType *elem; int length; int listsize;SqList; void color(const unsigned short color1)/颜色函数 /*仅限改变0-15的颜色;如果在0-15那么实现他的颜色 因为如果超过15后面的改变的是文本背景色*/ if(color1=0&color1elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);/开辟空间 if(!L-elem) printf(Allocation error.n); exit(0); L-length=0; L-listsize=LIS

4、T_INIT_SIZE; color(13); printf(n表初始化成功!n); color(10); void printsq_L(SqList *L)/输出 int i; for(i=0;ilength;i+) printf(%5d,L-elemi); if(i+1)%10=0) printf(n); printf(n);void deletesq_L(SqList *L,int i)/删除算法操作 int k,j; color(13); printf(n顺序表当前数据:n); printsq_L(L); color(10); printf(请输入删除元素的位置:); scanf(%d

5、,&k); color(13); printf(n顺序表删除元素前:n); printsq_L(L); if(kL-length) exit(1); for(j=k;jlength;j+) L-elemj-1=L-elemj; -L-length; printf(顺序表删除元素后:n); printsq_L(L); color(10); /*int LocateElem_Sq(SqList *L,ElemType e,void(*compare)(ElemType,ElemType) int *p; /在线性表L中查找第一个值与e满足compare()的元素的位序 /若找到,则返回其在L中的位

6、序,否则返回0 int i=1; p=L-elem; while(ilength) & (!(*compare)(*p+,5) +i; if(ilength) return i; else return 0;*/void search_L(SqList *L,ElemType e)/查找操作 int j,flag=0; color(13); printf(n顺序表当前数据:); printsq_L(L); color(10); printf(n请输入要查找的元素:); scanf(%d,&e); color(13); for(j=0;jlength;j+) if(L-elemj=e) flag

7、=1; printf(n找到元素:%d 位置为%d n,L-elemj,j+1); color(10); if(flag=0) printf(n没有找到该元素n); color(10);void modify_L(SqList *L,ElemType e1,ElemType e2) /修改操作 int j,n,flag=0; color(13); printf(n顺序表当前数据:); printsq_L(L); color(10); printf(n请输入要修改的元素:); scanf(%d,&e1); color(13); for(j=0;jlength;j+) if(L-elemj=e1)

8、 flag=1; printf(n找到元素:%d 位置为%d,L-elemj,j+1); printf(nn 1.修改 2.不修改 请输入: ); scanf(%d,&n); if(n!=1) break; if(n=1) printf(n元素%d改为: ,e1); scanf(%d,&e2); L-elemj=e2; printf(n修改成功!n ); printf(n修改后顺序表的数据:); printsq_L(L); break; if(flag=0) printf(n没有找到该元素n);color(10);void insertsq_L(SqList *L,int i,ElemType

9、 e)/插入算法函数 ElemType *newbase; int j; if(iL-length) printf(n插入元素不合法!n); exit(0); if(L-length=L-listsize) /开辟更大的空间 newbase=(ElemType*)realloc(L-elem,(L-listsize+LISTINCREMENT)*sizeof(ElemType); if(!newbase) exit(1); L-elem=newbase; L-listsize+=LISTINCREMENT; for(j=L-length-1;j=i;-j) L-elemj+1=L-elemj;

10、 L-elemi=e; +L-length;void Insertsq_L(SqList *L,int i,ElemType e)/插入算法函数【面向用户】 int k,s; color(13); printf(n顺序表当前数据:n); printsq_L(L); color(10); printf(请输入插入的位置和元素,以空格隔开:); scanf(%d%d,&k,&s); color(13); /*先判断位置是否合法,合法执行插入操作,反之则不执行。*/ if(kL-length) printf(n插入元素不合法!n); else printf(n顺序表插入元素前:n); printsq

11、_L(L); insertsq_L(L,k-1,s); printf(n顺序表插入元素后:n); printsq_L(L); color(10); void jianbiao(SqList *L) /建表:往表里放元素 int i,p,count; color(13); printf(n请输入您要创建的数据条数:); scanf(%d,&count); printf(n请输入数据:); for(i=0;i=0 & n=7) flag=1;break; else flag=0; system(cls); printf(您输入有误,请重新选择!n); while(flag=0); while(fl

12、ag=1) switch(n) case 1:initsq_L(L);break; /*表初始化*/ case 2:jianbiao(L);break; /*建表*/ case 3:Insertsq_L(L,i,e);break; /*插入*/ case 4:deletesq_L(L,i);break; /*删除*/ case 5:search_L(L,e);break; /*查找*/ case 6:modify_L(L,e1,e2);break; /*修改*/ case 7:printsq_L(L);break; /*打印*/ case 0:free(L);exit(0);break; de

13、fault:system(cls);goto start; printf(n是否继续进行(y or n): ); fflush(stdin);/清空在此前输入缓冲区 a=getchar(); if(a=y|a=Y) flag=1; system(cls); /*清屏*/ Menu(); /*调用菜单函数*/ printf(请再次选择你需要操作的步骤(0-7): ); fflush(stdin);/清空在此前输入缓冲区 scanf(%d,&n); else free(L);/释放顺序表 exit(0); 实验结果:1. 表初始化:2.建表:注:若以空格键隔开数据,多输入无影响,计算机读取完指定数目数据后,自动结束读取。3-1.插入位置合法:3-2.插入位置不合法:4.删除:5-1.查找成功:5-2.查找-没有相应数据:6-1.找到修改元素,并确定修改:6-2.找到修改元素,不修改:6-3.没找到修改元素:问题讨论:1.元素插入及删除过程中,计算机储存结构中元素位置从0开始,但面向用户时,应考虑人的自然思维,即面向用户时应以1为第一个元素位置,计算机实现需要把位置i=i+1.注:文件名为:学号+(次数)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1