本篇文章给大家谈谈高效链表编程:必备实用操作函数指南,以及对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
结构列表节点{
整数日期;
//其他元素
列表指针链接;
}列表节点;
1/反转反转
列表指针反转(列表指针领先)
{ /* 反转Lead 指向的列表*/
listPointer 中间,尾迹;
中间=空;
白色(铅){
轨迹=中间;
中间=领先;
Ilead=引导链接;
中间链接=踪迹;
}
返回中间;
}
2/连接串联
/* 生成一个新列表,其中包含列表ptr1 后跟
列出ptr2。 ptr1指向的列表被永久更改*/
列表指针连接(列表指针ptr1,列表指针ptr2)
{
Iist指针温度;
/* 检查空列表*/
if (!ptr1) 返回ptr2 ;
if (!ptr2) 返回ptr1 ;
/* 两个列表都不为空,找到第一个列表的末尾*/
for (temp=ptr1; temp-Iink; temp=lemp-Iink);
/* 将第一个列表的末尾链接到第二个列表的开头*/
临时链接=ptr2;
}
循环链表的操作
1/插入循环链表表头
last 指向表的末尾,而不是表头。通过这种方式设置链表指针,可以方便地在表头和表尾插入节点。如果你设置一个指向表头的指针,那么在表头之前插入一个节点是极其低效的。我们必须从头开始遍历整个链表,直到指针移动到表尾,然后才能将其插入到表头之前。
以下代码在循环链表的头部插入一个节点。
/* 在最后一个节点为循环链表的前面插入节点
最后的*/
void insertFront (listPointer *last, listPointer 节点)
{
/* 列表为空,将Last 更改为指向新条目*/
如果(!(*最后)){
*最后=节点;
节点链接=节点;
}
别的{
/* 列表不为空,在前面添加新条目*/
节点链接=(*last) -link;
(*最后) -link=节点;
}
}
2/在循环链表末尾插入
/* 在最后一个节点为循环链表的末尾插入节点
最后的*/
void insertend(listPointer *last, listPointer 节点)
{
/* 列表为空,将Last 更改为指向新条目*/
如果(!(*最后)){
*最后=节点;
节点链接=节点;
}
别的{
/* 列表不为空,在末尾添加新条目*/
节点链接=(*last) -link;
(*最后) -link=节点;
(*最后)=节点;
}
}
3/循环链表的长度
int 长度(列表指针最后)
{ /* 求循环链表最后的长度*/
列表指针临时;
整数计数=0;
如果(最后){
温度=最后;
做{
计数++;
temp=临时链接;
} while (临时!=最后);
}
返回计数;
}
双向链表的操作
双向链表的节点至少有三个字段,数据字段data、左链接字段llink、右链接字段rlink、节点声明
如下:
typedef 结构节点*nodepointer;
结构节点{
元素数据;
节点指针链接;
节点指针rlink;
};
注意: 双向链表也可以设置为循环列表,包括空表头。
1.插入
函数dinsert完成插入操作。 node是表中的第i个点,可以是头节点,也可以是内点。 newnode是要插入的节点。
void dinsert(节点指针节点,节点指针新节点)
{ /* 在节点右侧插入newnode */
newnode-Ilink=节点;
新节点-rIink=节点-rlink ;
节点-rlink-llink=新节点;
节点-rlink=新节点;
}
2.删除
void ddelete(nodePointer头,nodePointer删除)
{ /*删除head的第一个null_node为"deleted"的节点*/
if (节点==已删除)
printf("删除head中唯一不允许的节点");
别的{
已删除-llink-rIink=已删除-rIink;
删除-rIink-llink=删除-Ilink;
免费(已删除);
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!
【高效链表编程:必备实用操作函数指南】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
链表真的超级有用,很多算法都离不开它啊!
有12位网友表示赞同!
想要深入了解数据结构,学习链表操作是必不可少的!
有19位网友表示赞同!
我刚开始学数据结构,这篇文章正好帮到我了。
有11位网友表示赞同!
各种插入和删除操作,感觉都比较简单就能理解。
有11位网友表示赞同!
代码写的真清晰!看得懂的话,更容易上手啊。
有18位网友表示赞同!
链表的特点是什么?
有17位网友表示赞同!
还有哪些常见的链表操作函数呢?
有12位网友表示赞同!
学习完这些操作,我可以自己实现一些程序了吗?
有10位网友表示赞同!
我平时在做什么项目可以用到链表呢?分享一下大家的经验吧!
有17位网友表示赞同!
感觉实现这方面的算法还挺有挑战性的。
有8位网友表示赞同!
有没有什么技巧可以提高算法效率呢?
有16位网友表示赞同!
学习完链表,下一步该学什么数据结构?
有5位网友表示赞同!
操作函数的选择和实现方法都会影响性能吧?
有13位网友表示赞同!
这篇文章的讲解非常透彻!
有10位网友表示赞同!
这种数据结构用在软件开发中很常见吗?
有13位网友表示赞同!
什么时候使用链表比数组更合适呢?
有5位网友表示赞同!
做一些具体案例分析,会更容易理解这些操作吧!
有10位网友表示赞同!
学习链表,感觉自己对计算机科学的理解又向前迈了一步!
有19位网友表示赞同!
这个链接很实用的啊! 我想收藏它了,以后可以随时复习!
有6位网友表示赞同!
这篇文章介绍的内容很有深度!
有8位网友表示赞同!