1、静态链表
头指针、头节点等数据都在栈上。
1.1 链表节点定义
(1)数据域:我们要存储的数据在此
(2)指针域:指针指向下一个节点,下一个节点的类型就是本类型。
typedef struct node
{
int data;
struct node * next;
}Node;
指针指向问题:指针指向谁,就保存谁的地址。
1.2 遍历逻辑
1. 当前指针指向第一个元素,并且不为空
2. 打印第一个元素的值,同时能得到第二个元素的地址
3. 第二个元素的地址 赋值给当前指针。
Node * pHead = head;
while(pHead)
{
printf("%d\n", pHead->data);
pHead = pHead->next;
}
2、动态链表
只有头指针在栈上,其他数据都在堆上。
加入头节点的目的,是对于链表的所有操作,不需要更新头指针。
2.1 链表创建
1 尾插法
在尾节点插入,每插入一个节点,即成尾节点。