



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单循环链表基本操作/* (程序名) */#include #include#include #include#include#include /* malloc()等 */#include /* INT_MAX等 */#include /* EOF(=Z或F6),NULL */#include /* atoi() */#include /* eof() */#include /* floor(),ceil(),abs() */#include /* exit() */* 函数结果状态代码 */#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1/* #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行 */typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */ typedef int ElemType; /* c2-2.h 线性表的单链表存储结构 */struct LNode ElemType data; struct LNode *next;typedef struct LNode *LinkList; /* 另一种定义LinkList的方法 */ 单循环链表基本操作 / /* bo2-4.c 设立尾指针的单循环链表(存储结构由c2-2.h定义)的12个基本操作 */Status InitList_CL(LinkList *L) /* 操作结果:构造一个空的线性表L */ *L=(LinkList)malloc(sizeof(struct LNode); /* 产生头结点,并使L指向此头结点 */ if(!*L) /* 存储分配失败 */ exit(OVERFLOW); (*L)-next=*L; /* 指针域指向头结点 */ return OK; Status DestroyList_CL(LinkList *L) /* 操作结果:销毁线性表L */ LinkList q,p=(*L)-next; /* p指向头结点 */ while(p!=*L) /* 没到表尾 */ q=p-next; free(p); p=q; free(*L); *L=NULL; return OK; Status ClearList_CL(LinkList *L) /* 改变L */ /* 初始条件:线性表L已存在。操作结果:将L重置为空表 */ LinkList p,q;/ *L=(*L)-next; /* L指向头结点 */ p=(*L)-next; /* p指向第一个结点 */ while(p!=*L) /* 没到表尾 */ q=p-next; free(p); p=q; (*L)-next=*L; /* 头结点指针域指向自身 */ return OK; Status ListEmpty_CL(LinkList L) /* 初始条件:线性表L已存在。操作结果:若L为空表,则返回TRUE,否则返回FALSE */ if(L-next=L) /* 空 */ return TRUE; else return FALSE; int ListLength_CL(LinkList L) /* 初始条件:L已存在。操作结果:返回L中数据元素个数 */ int i=0; LinkList p=L-next; /* p指向头结点 */ while(p!=L) /* 没到表尾 */ i+; p=p-next; return i; Status GetElem_CL(LinkList L,int i,ElemType *e) /* 当第i个元素存在时,其值赋给e并返回OK,否则返回ERROR */ int j=1; /* 初始化,j为计数器 */ LinkList p=L-next-next; /* p指向第一个结点 */ LinkList p=L-next; /* p指向第一个结点 */ if(iListLength_CL(L) /* 第i个元素不存在 */ return ERROR; while(jnext; j+; *e=p-data; /* 取第i个元素 */ return OK; int LocateElem_CL(LinkList L,ElemType e,Status(*compare)(ElemType,ElemType) /* 初始条件:线性表L已存在,compare()是数据元素判定函数 */ /* 操作结果:返回L中第1个与e满足关系compare()的数据元素的位序。 */ /* 若这样的数据元素不存在,则返回值为0 */ int i=0; / LinkList p=L-next-next; /* p指向第一个结点 */ LinkList p=L-next; /* p指向第一个结点 */ while(p!=L-next) i+; if(compare(p-data,e) /* 满足关系 */ return i; p=p-next; return 0; Status PriorElem_CL(LinkList L,ElemType cur_e,ElemType *pre_e) /* 初始条件:线性表L已存在 */ /* 操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱, */ /* 否则操作失败,pre_e无定义 */ /LinkList q,p=L-next-next; /* p指向第一个结点 */ LinkList q,p=L-next; /* p指向第一个结点 */ q=p-next; while(q!=L-next) /* p没到表尾 */ if(q-data=cur_e) *pre_e=p-data; return TRUE; p=q; q=q-next; return FALSE; Status NextElem_CL(LinkList L,ElemType cur_e,ElemType *next_e) /* 初始条件:线性表L已存在 */ /* 操作结果:若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继, */ /* 否则操作失败,next_e无定义 */ / LinkList p=L-next-next; /* p指向第一个结点 */ LinkList p=L-next; /* p指向第一个结点 */ while(p!=L) /* p没到表尾 */ if(p-data=cur_e) *next_e=p-next-data; return TRUE; p=p-next; return FALSE; Status ListInsert_CL(LinkList *L,int i,ElemType e) /* 改变L */ /* 在L的第i个位置之前插入元素e */ LinkList p=(*L)-next,s; /* p指向头结点 */ int j=0; if(iListLength_CL(*L)+1) /* 无法在第i个元素之前插入 */ return ERROR; while(jnext; j+; s=(LinkList)malloc(sizeof(struct LNode); /* 生成新结点 */ s-data=e; /* 插入L中 */ s-next=p-next; p-next=s;/ if(p=*L) /* 改变尾结点 */ *L=s; return OK; Status ListDelete_CL(LinkList *L,int i,ElemType *e) /* 改变L */
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 通道运算说课稿-2025-2026学年中职专业课-图形图像处理-计算机类-电子与信息大类
- 鲁教版(五四制)八年级化学:第二单元第三节 水分子的变化 说课稿
- 6.19.2动物的生殖和发育说课稿2025-2026北师大版生物八年级上册
- 三年级信息技术下册 第四单元 第22课《海底蛟龙-潜艇》说课稿 冀教版
- 关于给领导感谢信15篇
- 六一儿童节开幕词18篇
- 中医学自考试题及答案
- 第一单元综合检测卷 (含答案)2025-2026学年统编版语文八年级上册
- 金融科技企业员工股权激励与数据安全合同
- 商业地产抵押担保借款合同范本
- 学堂在线 不朽的艺术:走进大师与经典 章节测试答案
- 几何公差培训课件
- 幼儿园意识形态培训内容
- 镇纪委组织农村干部培训材料
- 培训需求分析的课件
- 过程方法培训课件
- 工地充电房管理制度
- 腾讯公司培训管理制度
- 徒步队安全管理制度
- 皮具开发部管理制度
- 2025年高考英语全国二卷重点核心词汇归纳总结(复习必背)
评论
0/150
提交评论