c语言链式存储结构实现线性表,【C语言--数据结构】线性表链式存储结构(示例代码)...

/*** 线性表的链式存储*/#include#include#include#include"LinkList.h"typedefstruct_tag_LinkList

{

LinkListNode header;intlength;

}TLinkList;/**************************************************************************

** 函 数 名: LinkList_Create

** 函数作用: 创建一个链式存储的线性表

** 函数参数: void

** 返 回 值: LinkList*

**

** 日 期: 2017年2月14日

** 作 者: Rookie

***************************************************************************/LinkList*LinkList_create()

{

TLinkList* pstRet = (TLinkList *)malloc(sizeof(TLinkList));if (NULL !=pstRet)

{

pstRet->length = 0;

pstRet->header.next =NULL;

}returnpstRet;

}/**************************************************************************

** 函 数 名: LinkList_Destroy

** 函数作用: 销毁一个链式存储的线性表

** 函数参数: LinkList*

** 返 回 值: void

**

** 日 期: 2017年2月14日

** 作 者: Rookie

***************************************************************************/

void LinkList_Destroy(LinkList*pstList)

{free(pstList);

}/**************************************************************************

** 函 数 名: LinkList_Clear

** 函数作用: 清空一个链式存储的线性表

** 函数参数: LinkList*

** 返 回 值: void

**

** 日 期: 2017年2月14日

** 作 者: Rookie

***************************************************************************/

void LinkList_Clear(LinkList*pstList)

{

TLinkList* pstRet = (TLinkList *)pstList;if (NULL !=pstRet)

{

pstRet->length = 0;

pstRet->header.next =NULL;

}return;

}/**************************************************************************

** 函 数 名: LinkList_Lenght

** 函数作用: 得到一个链式存储的线性表的长度

** 函数参数: LinkList*

** 返 回 值: int

**

** 日 期: 2017年2月14日

** 作 者: Rookie

***************************************************************************/

int LinkList_Lenght(LinkList*pstList)

{

TLinkList* pstRet = (TLinkList *)pstList;int iRet = -1;if (NULL !=pstRet)

{

iRet= pstRet->length;

}returniRet;

}/**************************************************************************

** 函 数 名: LinkList_Insert

** 函数作用: 在一个链式存储的线性表的指定位置插入节点

** 函数参数: LinkList* pstList

** LinkListNode* pstNode

** int iPos

** 返 回 值: int

**

** 日 期: 2017年2月14日

** 作 者: Rookie

***************************************************************************/

int LinkList_Insert(LinkList* pstList, LinkListNode* pstNode, intiPos)

{

TLinkList* pstTemp = (TLinkList *)pstList;

LinkListNode*pstNodeCurrent;int iRet = ((NULL != pstTemp) && (iPos >= 0) && (NULL !=pstNode));intiLoop;if(iRet)

{

pstNodeCurrent= (LinkListNode*)pstTemp;for (iLoop = 0; (iLoop < iPos) && (pstNodeCurrent->next != NULL); iLoop++)

{

pstNodeCurrent= pstNodeCurrent->next;

}

pstNode->next = pstNodeCurrent->next;

pstNodeCurrent->next =pstNode;

pstTemp->length++;

}returniRet;

}/**************************************************************************

** 函 数 名: LinkList_Get

** 函数作用: 获得一个链式存储的线性表的指定位置节点

** 函数参数: LinkList* pstList

** int iPos

** 返 回 值: LinkListNode*

**

** 日 期: 2017年2月14日

** 作 者: Rookie

***************************************************************************/LinkListNode* LinkList_Get(LinkList* pstList, intiPos)

{

TLinkList* pstTemp = (TLinkList *)pstList;

LinkListNode* pstNodeRet =NULL;

LinkListNode* pstNodeCur =NULL;intiLoop;if ((NULL != pstTemp) && (iPos >= 0) && (iPos <= pstTemp->length))

{

pstNodeCur= (LinkListNode*)pstTemp;for (iLoop = 0; iLoop < iPos; iLoop++)

{

pstNodeCur= pstNodeCur->next;

}

pstNodeRet= pstNodeCur->next;

}returnpstNodeRet;

}/**************************************************************************

** 函 数 名: LinkList_Delete

** 函数作用: 删除一个链式存储的线性表的指定位置节点

** 函数参数: LinkList* pstList

** int iPos

** 返 回 值: LinkListNode*

**

** 日 期: 2017年2月14日

** 作 者: Rookie

***************************************************************************/LinkListNode* LinkList_Delete(LinkList* pstList, intiPos)

{

TLinkList* pstTemp = (TLinkList *)pstList;

LinkListNode* pstNodeRet =NULL;

LinkListNode* pstNodeCur =NULL;intiLoop;if ((NULL != pstTemp) && (iPos >= 0) && (iPos < pstTemp->length))

{

pstNodeCur= (LinkListNode*)pstTemp;for (iLoop = 0; iLoop < iPos; iLoop++)

{

pstNodeCur= pstNodeCur->next;

}

pstNodeRet= pstNodeCur->next;

pstNodeCur->next = pstNodeRet->next;

pstTemp->length--;

}returnpstNodeRet;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值