




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章线性表1.线性表/*实现了线性表的定义,创建空的线性表,线性表元素的输入,输出操作,对线性表进行增删的操作以及对两个顺序线性表按照顺序进行合并*/#include#include#include#define LIST_INIT_SIZE 100 /定义线性表的长度#define INCREMENT 2 /定义存储空间的分配增量typedef structint *elem; /线性表存储空间的首地址int length; /线性表的长度 int listsize; /现性表的大小 Sqlist;void init(Sqlist &L) /初始化一个线性表L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int);if(!L.elem) exit(0);L.length=0;L.listsize=LIST_INIT_SIZE;return ;void listinsert(Sqlist &L,int e,int i) /在第i个元素之前插入数据eint *newbase=NULL; /创建新的起始地址int *q;int *p;if(iL.length+1) /插入元素失败exit(0);if(L.length=L.listsize) /存储空间不足,重新分配空间newbase=(int *)realloc(L.elem,(LIST_INIT_SIZE+INCREMENT)*sizeof(int);if(!newbase)exit(0);L.elem=newbase;L.listsize+=INCREMENT;q=&L.elemi-1; /找到第i个元素for(p=&L.elemL.length-1;p=q;p-) *(p+1)=*p; /把第i个元素及之后的每一个元素向后移动一位*q=e; /插入目标元素L.length+;return ;void listdelete(Sqlist &L,int i,int &e) /删除第i个元素,返回被删除的元素的值int *p;int *q;if(iL.length)exit(0);e=L.elemi-1;q=&L.elemL.length-1;for(p=&L.elemi;pL.listsize)exit(0);for(j=0;ji;j+)scanf(%d,&L.elemj);L.length+;void listput(Sqlist L)/输出线性表中全部的元素int i=0;if(L.length=0)exit(0);for(i=0;iL.length;i+)printf(%d ,L.elemi);printf(n);return ;void mergin(Sqlist La,Sqlist Lb,Sqlist &Lc)int *pa=La.elem;int *pb=Lb.elem;int *pa_last=&La.elemLa.length-1;int *pb_last=&Lb.elemLb.length-1;int *pc;int i=0;init(Lc);pc=Lc.elem;while(pa=pa_last&pb=pb_last) /这里以及下面的判断条件一定要指针指出去才能算把数据放大Lc中去了if(*pa=*pb)Lc.elemi=*pa;pa+;elseLc.elemi=*pb;pb+;i+;Lc.length+;while(pa=pa_last)Lc.elemi=*pa;pa+;i+;Lc.length+;while(pb=pb_last)Lc.elemi=*pb;pb+;i+;Lc.length+;/*int main() /测试线性表的增删操作int e;Sqlist L;init(L); /创建一个新的空的线性表printf(请输入5个数n);listinput(L,5); /输入5个整数printf(输入的5个整数为: );listput(L);printf(在第2个数之前插入整数99);listinsert(L,99,2);printf(n输出线性表中的数据);listput(L);printf(删除线性表中第4位元素);listdelete(L,4,e); printf(删除的数为:%dn,e);printf(输出线性表中的数据);listput(L);return 0;*/int main() /测试两个顺序线性表的合并操作printf(创建两个线性表);Sqlist La,Lb,Lc;init(La);init(Lb);printf(输入线性表1中的数据,5个整数n);listinput(La,5);printf(输入线性表2中的数据,5个整数n);listinput(Lb,5);mergin(La,Lb,Lc);printf(n输出合并和线性表3中的数据n);listput(Lc);return 0;线性链表#include#include#includetypedef struct LNode /定义一种数据类型,它是由一个整数数据和一个指向这中数据的指针组成的int data; /存放整形数据struct LNode *next; /指向下一个数据的指针 *linklist;/创建一个有n个数据的数据链表(带头结点,且是向前插入,后面数据一个个往前输)void createlinklist1(linklist &L,int n)int i;linklist p;L=(linklist)malloc(sizeof(LNode); /创建一个头结点(线性表的空间不是连在一起的,不能一起申请完了,只能用一个申请一个)L-next=NULL;for(i=n;i0;i-)p=(linklist)malloc(sizeof(LNode);scanf(%d,&p-data);p-next=L-next; L-next=p;/创建一个有n个数据的数据链表(带头结点,且是向后插入,前面数据一个个往后输)void createlinklist2(linklist &L,int n)int i;linklist p,r; /把p作为要新创建的节点,r永远是p节点前面的节点,这样链就不会断L=(linklist)malloc(sizeof(LNode);L-next=NULL;r=L;for(i=0;idata);r-next=p;p-next=NULL;r=p;/输出线性链表中的数据void putoutlinklist(linklist &L)linklist p;if(!L-next)exit(0);p=L; /p指向头结点while(p-next) /p指下一个数据向的数据后面还有数据p=p-next; /p指向printf(%d ,p-data);printf(n);/获取链表中第n位的元素void getelem(linklist &L,int n,int &e)linklist p;int i=0;p=L;while(p&inext; /不断获取下一位元素i+;if(!p|in) exit(0);e=p-data;/在链表第n位之前插入一个元素void insertlinklist(linklist &L,int n,int e)linklist p,q;int i=0;p=L;while(p&inext;i+; if(!p|in-1) exit(0); q=(linklist)malloc(sizeof(LNode);q-data=e;q-next=p-next;p-next=q;void deletelinklist(linklist &L,int n,int &e) /删除链表中第n个数据linklist p;int i=0;p=L;while(p&inext;i+;if(!q|in) exit(0);e=p-next-data;p-next=p-next-next;int main()linklist l; int e=0;printf(创建一个有5个元素的链表n);/createlinklist1(l,5);createlinklist2(l,5);printf(输入链表中的内容:n);putoutlinklist(l);printf(删除链表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 盈利能力与风险管理策略的关系试题及答案
- 黑龙江省大庆市一中学2025届数学七下期末统考试题含解析
- 移动互联网企业的技术挑战试题及答案
- 2025年市场风险与机遇分析试题及答案
- 环保投资的财务考量计划
- 网络性能评估试题及答案解析
- 跨学科研讨会策划计划
- 软件技术员试题及答案创新指南
- 加强自我驱动的工作态度计划
- 财务模型与商业模式的协同试题及答案
- 形势与政策(2025春)超星尔雅学习通答案满分章节测试
- ISO28000:2022供应链安全管理体系
- 深圳市失业人员停止领取失业保险待遇申请表样表
- 心理契约的概念、维度及特点
- 年产1亿支盐酸普鲁卡因注射液实用工艺设计
- EMC_CX系列存储
- (完整版)围堰筑岛围堰施工专项方案
- 扣件式钢管脚手架检查评分表
- 高压喷射注浆工程施工工艺标准
- 最新部编版九年级语文下册课件(完美版)写作布局谋篇
- 装修公司客户回访方案及流程
评论
0/150
提交评论