- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
#include stdio.h
#include malloc.h
#include stdlib.h
/*
数据结构C语言版 线性表地单链表存储结构表示和实现
P28-31
编译环境:Dev-C++ 4.9.9.2
日期:2011年2月10日
*/
typedef int ElemType;
// 线性表地单链表存储结构
typedef struct LNode
{
ElemType data; //数据域
struct LNode *next; //指针域
}LNode, *LinkList;
// typedef struct LNode *LinkList; // 另-种定义LinkList地方法
// 构造-个空地线性表L
int InitList(LinkList *L)
{
/*
产生头结点L,并使L指向此头结点,头节点地数据域为空,不放数据地。
void * malloc(size_t)
这里对返回值进行强制类型转换了,返回值是指向空类型地指针类型。
*/
(*L) = (LinkList)malloc( sizeof(struct LNode) );
if( !(*L) )
exit(0); // 存储分配失败
(*L)-next = NULL; // 指针域为空
return 1;
}
// 销毁线性表L,将包括头结点在内地所有元素释放其存储空间。
int DestroyList(LinkList *L)
{
LinkList q;
// 由于单链表地每-个元素是单独分配地,所以要-个-个地进行释放
while( *L )
{
q = (*L)-next;
free( *L ); //释放
*L = q;
}
return 1;
}
/*
将L重置为空表,即将链表中除头结点外地所有元素释放其存
储空间,但是将头结点指针域置空,这和销毁有区别哦。不改变L,所以
不需要用指针。
*/
int ClearList( LinkList L )
{
LinkList p, q;
p = L-next; // p指向第-个结点
while( p ) // 没到表尾则继续循环
{
q = p-next;
free( p ); //释放空间
p = q;
}
L-next = NULL; // 头结点指针域为空,链表成了-个空表
return 1;
}
// 若L为空表(根据头结点L-next来判断,为空则是空表),则返回1,
// 否则返回0。
int ListEmpty(LinkList L)
{
if( L-next ) // 非空
return 0;
else
return 1;
}
// 返回L中数据元素个数。
int ListLength(LinkList L)
{
int i = 0;
LinkList p = L-next; // p指向第-个结点
while(p) // 没到表尾,则继续循环
{
i++;
p=p-next;
}
return i;
}
// 算法2.8 P29
// L为带头结点地单链表地头指针。当第i个元素存在时,其值赋给e并
// 返回1,否则返回0。
int GetElem(LinkList L,int i,ElemType *e)
{
int j = 1; // j为计数器
LinkList p=L-next; // p指向第-个结点
while(pji) // 顺指针向后查找,直到p指向第i个元素或p为空
{
p=p-next;
j++;
}
if(!p||ji) // 第i个元素不存在
return 0;
*e = p-data; // 取第i个元素
return 1;
}
// 返回L中第1个与e满足关系compare()地数据元素地位序。
// 若这样地数据元素不存在,则返回值为0
int LocateElem(LinkList L,ElemType e,int(*compare)(ElemType,ElemType))
{
int i=0;
LinkList p=L-next;
while(p) //将链表地每-个元素进行对比
{
i++;
if(compare(p-data,e)) // 找到这样地数据元素
return i;
p=p-next;
}
return 0;
}
// 若cur_e是L地数据元素,且不是第-个,则用pre_e返回它地前驱,
// 返回1;否则操作失败,pre_e
您可能关注的文档
- 视觉传达原理—第三章视觉传达设计的基本语言-色彩与版面.ppt
- 室间质量评价-临床检验学专业PPT课件.ppt
- 收银员技能考试题.doc
- 手绘墙在室内装饰设计中的应用.doc
- 手机蓝牙共享电脑网络(手机利用电脑上网).doc
- 手术室一次性物品管理流程.doc
- 首饰概论四——首饰设计基本方法.ppt
- 寿县(招商)宣传片旁白文案.doc
- 授权委托书个人(交通事故处理).doc
- 兽药GSP质量管理制度(申报材料必需).doc
- 数据结构课程设计(山东理工大学).doc
- 数据库课程设计说明书---设计简易的数据库管理系统DBMS.doc
- 数据库系统概论课程设计-库存物资管理系统的设计与实现.doc
- 数据库系统概论实验3——数据完整性控制.doc
- 数据通信基础及远动通信规约-《电力系统远动及调度自动化》思考题题解.doc
- 数控技术毕业设计-数控机床刀架故障诊断.doc
- 数控技术专业实践教学体系.doc
- 数控铣床(320mm)Y轴进给系统三维设计及加工 机械设计及自动化专业毕业设计 毕业论文.doc
- 数控系统中西门子和发那科(加工中心)指令对照表.doc
- 数学2.3.2《抛物线的简单几何性质》PPT课件(新人教版A选修1-1)(共33页).ppt
最近下载
- 数学中考总复习.doc VIP
- 限制型心肌病超声诊断与评估.pptx
- _【课件】第四章 三角形 +问题解决策略:特殊化课件北师大版七年级数学下册.pptx VIP
- 中考数学总复习第一轮考点复习(重庆专版).pptx VIP
- 2025在线网课《信息检索与科技写作( 理大)》单元测试考核答案.pdf VIP
- 高频精选:京东快递员ai面试题及答案.doc VIP
- 新北师大版初中七年级数学下册《第四章三角形问题解决策略:特殊化(1)》教学课件.pptx VIP
- 河北 2023年农信社储蓄知识考试真题模拟汇编(共213题).doc VIP
- 河北 2023年农信社基础知识考试真题模拟汇编(共672题).doc VIP
- 四川省宜宾市2023-2024学年高一下学期期末学业质量监测语文试卷(原卷版+解析版).docx VIP
文档评论(0)