概念
链式存储:结点在存储器中的位置是任意的,即逻辑相邻的数据元素在物理上不一定相邻
链式存储结构也称非顺序映像或链式映像
图解
链式存储结构中结点一般有两个部分组成,即数据域(data)和指针域,数据域是用于存放数据的,指针域是用来指向下一结点的地址的,其中头节点指向该链表的首元结点,表示该链表从这开始,尾结点的指针域是空的(NULL),当遇到空的指针域表示该链表到这个结点就已结束。
C语言实现
#include<stdio.h>
#include<stdlib.h>
//定义链表结构体
typedef struct Link{
int data;
struct Link* next;
}Link;
//初始化链表
Link* initLink() {
Link* head = (Link*)malloc(sizeof(Link)); //创建头结点
Link* temp = head; //临时结点
head->data = NULL; //头结点数据域为空
head->next = NULL; //头结点指针域为空
for (int i = 1; i < 5; i++) {
Link* n = (Link*)malloc(sizeof(Link)); //创建新结点
n->data = i; //新结点数据域赋值
n->next = temp->next; //新结点指针域为上一结点的指针域
temp->next = n; //上一结点的指针域为新结点
temp = temp->next; //temp指向新结点
}
return head; //返回链表头