目录
1 链表的引入
链表的每个节点由数据域和指针域构成。数据域存放数据元素信息,指针域存放后继节点的地址。最后一个节点是没有后继节点,因此其指针域一般设置为NULL。

链表与数组的区别?
数组是线性存储结构,在内存地址是连续的,增加一个数组元素和删除一个数组元素都是非常不方便;而链表是链式存储结构,在内存空间中地址不一定是连续的,因为地址不连续所以插入一个节点或者删除一个节点都是非常方便,可以看出链表比较灵活。
如何使用链表存放三个整数1,2,3 ?
#include<stdio.h>
struct Test{
int data;
struct Test *next;
};
int main(void)
{
/*申明了三个节点,存放数据1,2,3;但是这三个
节点之间并没有联系,因为他们的指针域并没有存放
后继节点的地址*/
struct Test t1 = {1, NULL};
struct Test t2 = {2, NULL};
struct Test t3 = {3, NULL};
/*让指针存放后继节点的地址*/
t1.next = &t2;
t2.next = &t3;
/*现在通过变量t1就可以访问到t2,t3里面的数据*/
printf("t1 = %d\nt2 = %d\nt3 = %d\n",t1.data,t1.next->data,t1.next->next->data);
return 0;
}
2 链表的动态遍历
链表的最后一个节点是没有后继节点;因此可以通过判断当前节点的指针是否为NULL来遍历循环链表。
struct Test *print_link(struct Test *head)
{
struct Test *temp = head;
while(temp)//因为最后一个节点是没有后继节点的,所以可以通过判断后继节点是否为NULL来遍历链表
{
printf("%d\n",temp->data);
temp = temp->next; //让temp指向后继节点
}
}
3 遍历链表中的p = p - next

4 统计链表的个数
在动态遍历链表的时候,设置一个计算器变量i;通过i来统计链表的个数
int Get_link_nodeNum(struct Test *head)
{
struct Test *temp = head;
int i = 0;
while(temp)
{
i++;
temp = temp->next;


7739





