若线性表为空表,则头结点的指针域为“空”,如图3-6-6所示。
    image.png
    这里我们大概地用图示表达了内存中单链表的存储状态。看着满图的省略号“……”,你就知道是多么不方便。而我们真正关心的:它是在内存中的实际位置吗?不是的,这只是它所表示的线性表中的数据元素及数据元素之间的逻辑关系。所以我们改用更方便的存储示意图来表示单链表,如图3-6-7所示。
    image.png
    若带有头结点的单链表,则如图3-6-8所示。
    image.png
    空链表如图3-6-9所示。
    image.png
    单链表中,我们在C语言中可用结构指针来描述。

    1. /* 线性表的单链表存储结构 */
    2. typedef struct Node {
    3. ElemType data;
    4. struct Node *next;
    5. } Node;
    6. /* 定义LinkList */
    7. typedef struct Node *LinkList;

    从这个结构定义中,我们也就知道,结点由存放数据元素的数据域和存放后继结点地址的指针域组成。假设p是指向线性表第i个元素的指针,则该结点ai的数据域我们可以用p->data来表示,p->data的值是一个数据元素,结点ai的指针域可以用p->next来表示,p->next的值是一个指针。p->next指向谁呢?当然是指向第i+1个元素,即指向a i+1 的指针。也就是说,如果p->data=a i ,那么p->next->data=a i+1 (如图3-6-10所示)。
    image.png