C语言链表遍历方式总结
前言
链表作为基于数组的一种数据结构,在提供更灵活的功能的同时其实对某一功能提出更多的限制,比如是遍历链表。
一、链表是什么
链表是由数组和指针结合,转化而来的一种数据结构。其实际静态作用跟数组一样都是存储多个相同类型的数据,不同之处在于:在内存上,数组使用一段连续的地址进行存储,其地址在数组定义时就已经确定,当我们需要对数组某个元素进行取值时,可以使用下标指定数组元素的方法和利用数组指针进行移动的方法对数组进行取值;而链表与此不同,使用的并不是一段连续的地址,无法直接通过下标或简单指针移动的方法对链表内元素进行取值,故链表遍历的实现非常重要。
二、遍历链表
1.链表自身遍历法
代码如下(示例):
for(list=head;list!=NULL;list=list->next)
其中有头元点的要注意代码为:
for(list=head->next;list!=NULL;list=list->next)
2.找到最后一个元点
代码如下(示例):
while(cur->next!=null)
{
cur=cur->next;
}
此时,cur移动到链表的最后一个元点。有:
cur->next=NULL;
cur->=arry[n-1]; //所对应数组的最后一个元素。
3.找到倒数第二个元点
代码如下(示例):
while(nextNode->next!=null)
{
cur=cur->next;
nextNode=cur->next;
}
总结
当链表作为输入参数时一般只提供首节点,没有提供元素个数,所以不能用
for(i=0;i<n;i++)
{
cur=cur->next;
}
这种借助外数的方法进行遍历,而数组因为定义初始化的时候就固定了大小,故可以借助上述方法进行遍历。
`参考资料:https://blog.csdn.net/qq_45277758/article/details/114370733