链表:是一种链式存储的结构,它不要求逻辑上相邻的元素在物理位置上也相邻。
因此,为了表示每个数据元素ai与其后继数据元素ai+1之间的逻辑关系,对于数据元素ai来说,它不仅要存储自己的本身信息,还需要存储一个指示其直接后继的信息,这两部分组成数据元素ai的存储映像,称为结点。
结点包括两个域:存储本身信息的数据域和存储直接后继位置的指针域。
有这样n个结点链接成的链表为线性表的链式存储。一般结点的定义形式:
typedef struct Node
{
type data;
struct Node* next;
}Node,*Linklist;
一般会在第一个结点前设置一个头结点,头结点的数据域可以不存储任何信息,头结点的指针域存储指向第一个结点的指针。

L为头结点 不存储任何数据 a4为最后一个结点,其指针域为空。
所以每定义一个新的结点,不仅要对它输入数据,还要将链表的尾结点指向新结点,新结点的指针要及时置为空。
注意:链表的空间分配是由malloc(sizeof(Node))来申请的 删除结点最后也要通过free()来释放内存。
链表逆序:
void reverse(Linklist link)
{
if (link == NULL || link->next == NULL)
{
return;
}
Node* pre = link->next; //记录前一个节点,第一次为第一个结点
Node* node = pre->next; //记录当

最低0.47元/天 解锁文章
3636

被折叠的 条评论
为什么被折叠?



