数据结构-线性表-单链表
不带头结点的 单链表 (链式存储) 不要求逻辑上相邻的两个数据元素逻辑上也相邻,他们是通过"链",建立起数据元素之间的逻辑关系。因此对线性表的插入、删除 不需要移动数据元素,只需要修改"链" 。 例如:画出26个字母的链式存储结构 逻辑结构:(a,b,c,…,x,y,z) 链式存储结构: 结点由两个域组成: 数据域 :存储元素数值数据 指针域 :存储直接后继结点的存储位置 与链式存储有关的术语 结点:数据元素的存储映像。由数值域和指针域两部分组成。 链表:n个结点由链指针组成一个链表。他是线性表的链式存储映像,称为线性表的链式存储结构。 单链表:结点只有一个指针域的链表。 双链表:有两个指针域的链表。 循环链表:首尾相接的链表。 头指针、首元结点 头指针:指向链表中第一个结点的指针。 首元结点:链表中存储第一个数据元素a1的结点。 空表 非空表 单链表是由表头唯一确定,因此单链表可以用头指针的名字来命名。若头指针是head,则把链表称之为表head。 建立一个空的单链表 : node * init ( ) { return NULL ; } 遍历操作 工作指针后移,从首结点出发,通过工作指针的反复后移而将整个单链表"审视"一次的方法。 输出单链表中各个结点的值 void display ( linklist head ) { linklist p ; p = head ; if (