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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构代码.pdf

1、第 1 页 共 51 页(线性表顺序存储)#include string.h#include ctype.h#include stdio.h#include stdlib.h#include io.h#include math.h#include time.h#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20/*存储空间初始分配量*/typedefintStatus;/*Status 是函数的类型,其值是函数结果状态代码,如 OK 等*/typedefintElemType;/*ElemType

2、类型根据实际情况而定,这里假设为int*/Statusvisit(ElemType c)printf(%d,c);return OK;typedef structElemTypedataMAXSIZE;/*数组,存储数据元素*/intlength;/*线性表当前长度*/SqList;/*初始化顺序线性表*/StatusInitList(SqList*L)L-length=0;return OK;/*初始条件:顺序线性表 L 已存在。操作结果:若 L 为空表,则返回 TRUE,否则返回 FALSE*/StatusListEmpty(SqList L)if(L.length=0)return TR

3、UE;elsereturn FALSE;/*初始条件:顺序线性表 L 已存在。操作结果:将 L 重置为空表*/StatusClearList(SqList*L)L-length=0;return OK;/*初始条件:顺序线性表 L 已存在。操作结果:返回L中数据元素个数*/intListLength(SqList L)return L.length;/*初始条件:顺序线性表 L 已存在,1iListLength(L)*/*操作结果:用 e 返回 L 中第 i 个数据元素的值,注意i是指位置,第 1 个位置的数组是从 0 开始*/Status GetElem(SqList L,int i,Ele

4、mType*e)if(L.length=0|iL.length)return ERROR;*e=L.datai-1;return OK;/*初始条件:顺序线性表 L 已存在*/*操作结果:返回 L 中第 1 个与 e 满足关系的数据元素的位序。*/*若这样的数据元素不存在,则返回值为 0*/intLocateElem(SqList L,ElemType e)inti;if(L.length=0)return 0;for(i=0;i=L.length)return 0;return i+1;/*初始条件:顺序线性表 L 已存在,1iListLength(L),*/*操作结果:在L中第i个位置之前

5、插入新的数据元素 e,L 的长度加 1*/Status ListInsert(SqList*L,int i,ElemTypee)intk;if(L-length=MAXSIZE)/*顺序线性表已经满*/return ERROR;if(iL-length+1)/*当 i 比第一位置小或者比最后一位置后一位置还要大时*/return ERROR;if(ilength)/*若插入数据位置不在表尾*/for(k=L-length-1;k=i-1;k-)/*将要插入位置之后的数据元素向后移动一位*/第 2 页 共 51 页L-datak+1=L-datak;L-datai-1=e;/*将新元素插入*/L

6、-length+;return OK;/*初始条件:顺序线性表 L 已存在,1iListLength(L)*/*操作结果:删除 L 的第 i 个数据元素,并用 e 返回其值,L 的长度减 1*/StatusListDelete(SqList*L,int i,ElemType*e)intk;if(L-length=0)/*线性表为空*/return ERROR;if(iL-length)/*删除位置不正确*/return ERROR;*e=L-datai-1;if(ilength)/*如果删除不是最后位置*/for(k=i;klength;k+)/*将删除位置后继元素前移*/L-datak-1=

7、L-datak;L-length-;return OK;/*初始条件:顺序线性表 L 已存在*/*操作结果:依次对 L 的每个数据元素输出*/StatusListTraverse(SqList L)inti;for(i=0;iL.length;i+)visit(L.datai);printf(n);return OK;void unionL(SqList*La,SqList Lb)intLa_len,Lb_len,i;ElemTypee;La_len=ListLength(*La);Lb_len=ListLength(Lb);for(i=1;i=Lb_len;i+)GetElem(Lb,i,&

8、e);if(!LocateElem(*La,e)ListInsert(La,+La_len,e);intmain()SqList L;SqList Lb;ElemTypee;Statusi;intj,k;i=InitList(&L);printf(初始化 L 后:L.length=%dn,L.length);for(j=1;j=5;j+)i=ListInsert(&L,1,j);printf(在 L 的表头依次插入 15 后:L.data=);ListTraverse(L);printf(L.length=%d n,L.length);i=ListEmpty(L);printf(L 是否空:i

9、=%d(1:是0:否)n,i);i=ClearList(&L);printf(清空 L 后:L.length=%dn,L.length);i=ListEmpty(L);printf(L 是否空:i=%d(1:是0:否)n,i);for(j=1;j=10;j+)ListInsert(&L,j,j);printf(在 L 的表尾依次插入 110 后:L.data=);ListTraverse(L);printf(L.length=%d n,L.length);ListInsert(&L,1,0);printf(在 L 的表头插入 0 后:L.data=);ListTraverse(L);print

10、f(L.length=%d n,L.length);GetElem(L,5,&e);printf(第 5 个元素的值为:%dn,e);for(j=3;j=k;j-)i=ListDelete(&L,j,&e);/*删除第 j 个数据*/if(i=ERROR)printf(删 除 第%d 个 数 据 失 败n,j);elseprintf(删除第%d 个的元素值为:%dn,j,e);printf(依次输出 L 的元素:);ListTraverse(L);j=5;第 3 页 共 51 页ListDelete(&L,j,&e);/*删除第 5 个数据*/printf(删除第%d 个的元素值为:%dn,j

11、,e);printf(依次输出 L 的元素:);ListTraverse(L);/构造一个有 10 个数的 Lbi=InitList(&Lb);for(j=6;jnext=NULL;/*指针域为空*/return OK;/*初始条件:顺序线性表 L 已存在。操作结果:若 L 为空表,则返回 TRUE,否则返回 FALSE*/Status ListEmpty(LinkList L)if(L-next)return FALSE;elsereturn TRUE;/*初始条件:顺序线性表 L 已存在。操作结果:将 L 重置为空表*/Status ClearList(LinkList*L)LinkLis

12、t p,q;p=(*L)-next;/*p 指向第一个结点*/while(p)/*没到表尾*/q=p-next;free(p);p=q;(*L)-next=NULL;/*头结点指针域为空*/return OK;/*初始条件:顺序线性表 L 已存在。操作结果:返回L中数据元素个数*/intListLength(LinkList L)inti=0;LinkList p=L-next;/*p 指向第一个结点*/while(p)i+;p=p-next;returni;/*初始条件:顺序线性表 L 已存在,1iListLength(L)*/*操作结果:用 e 返回 L 中第 i 个数据元素的值*/Sta

13、tus GetElem(LinkList L,int i,ElemType*e)intj;LinkList p;/*声明一结点 p*/第 4 页 共 51 页p=L-next;/*让 p 指向链表 L 的第一个结点*/j=1;/*j 为计数器*/while(p&jnext;/*让 p 指向下一个结点*/+j;if(!p|ji)return ERROR;/*第 i 个元素不存在*/*e=p-data;/*取第 i 个元素的数据*/return OK;/*初始条件:顺序线性表 L 已存在*/*操作结果:返回 L 中第 1 个与 e 满足关系的数据元素的位序。*/*若这样的数据元素不存在,则返回值为

14、 0*/intLocateElem(LinkList L,ElemTypee)inti=0;LinkList p=L-next;while(p)i+;if(p-data=e)/*找到这样的数据元素*/returni;p=p-next;return 0;/*初始条件:顺序线性表 L 已存在,1iListLength(L),*/*操作结果:在L中第i个位置之前插入新的数据元素 e,L 的长度加 1*/StatusListInsert(LinkList*L,int i,ElemTypee)intj;LinkList p,s;p=*L;j=1;while(p&jnext;+j;if(!p|ji)ret

15、urn ERROR;/*第 i 个元素不存在*/s=(LinkList)malloc(sizeof(Node);/*生成新结点(C语言标准函数)*/s-data=e;s-next=p-next;/*将 p 的后继结点赋值给 s的后继*/p-next=s;/*将 s 赋值给 p 的后继*/return OK;/*初始条件:顺序线性表 L 已存在,1iListLength(L)*/*操作结果:删除 L 的第 i 个数据元素,并用 e返回其值,L 的长度减 1*/Status ListDelete(LinkList*L,int i,ElemType*e)intj;LinkList p,q;p=*L;

16、j=1;while(p-next&jnext;+j;if(!(p-next)|ji)return ERROR;/*第 i 个元素不存在*/q=p-next;p-next=q-next;/*将 q 的后继赋值给 p 的后继*/*e=q-data;/*将 q 结点中的数据给 e*/free(q);/*让系统回收此结点,释放内存*/return OK;/*初始条件:顺序线性表 L 已存在*/*操作结果:依次对 L 的每个数据元素输出*/Status ListTraverse(LinkList L)LinkList p=L-next;while(p)visit(p-data);p=p-next;printf(n);return OK;/*随机产生 n 个元素的值,建立带表头结点的单链线性表L(头插法)*/void CreateListHead(LinkList*L,intn)LinkList p;inti;srand(time(0);/*初始化随机数种子*/*L=(LinkList)malloc(sizeof(Node);(*L)-next=NULL;/*先建立一个带头结点的单链表*/for(

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

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