首页 > 其他 > 详细

循环链表(c)

时间:2021-05-24 22:55:12      阅读:17      评论:0      收藏:0      [点我收藏+]

/*
malloc(m): 开辟m字节长度的地址空间,并返回空间的首地址
sizeof(x): 计算变量x的的长度
free(p): 释放指针p所指变量的存储空间,即彻底删除一个变量
*/
// 存储结构
typedef struct DuLNode
{
ElemType data; // 数据域 (ElemType为你所要存储的数据的类型,可以是基本类型,也可以是自己定义的结构体类型)
struct DuLNode *prior; // 指向直接前驱
struct DuLNode next; // 指向直接后驱
}DuLNode,
DuLinkList;
// 双向链表初始化
Status InitDuLinkList(DuLinkList &L) // Status(状态)由自己去定义,例如用0,1表示表示出问题(ERROR)和成功(OK)
{
L = (DulLNode)malloc(sizeof(DuLNode)); // 开辟DuLNode所需要字节长度的地址空间,作为链表的首地址
if(!L)
return ERROR; // 没有开辟空间说明出问题了,返回状态为ERROR
L->prior = null;
L->next = null;
return OK; // 开辟成功返回状态为OK
}
技术分享图片
// 双向链表的插入,在第i个位置之前插入数据e
Status ListInsert_DuL(DuLinkList &L,int i,ElemType e)
{
DuLNode p = (DuLNode)malloc(sizeof(DuLNode));
if(!(p = !(GetElem(L,i)))) // 如果该位置为空,则不能插入,返回状态为ERROR
return ERROR;
DuLNode s = (DuLNode)malloc(sizeof(DuLNode));
s->prior = p->prior;
p->prior->next = s;
s->next = p;
p->prior = s;
return OK;
}
技术分享图片
// 双向链表的删除,删除双向链表中的第i个元素
Status ListDelete_DuL(DuLinkList &L,int i)
{
DuLNode p = (DuLNode)malloc(sizeof(DuLNode));
if(!(p = !(GetElem(L,i)))) // 如果该位置为空,则不能插入,返回状态为ERROR
return ERROR;
p->prior->next = p->next;
p->next->prior = p->prior;
free(p);
return OK;
}

循环链表(c)

原文:https://www.cnblogs.com/xie213/p/14805788.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!