C和指针--链表

1.链表的基本概念

链表(linked list)是一些包含数据的节点的集合。链表中的每个节点通过链或指针连接在一起。程序通过指针访问链表中的节点。通常节点是动态分配的。

2.链表的分类

链表可分为:单链表

2.1.单链表

在单链表中,每个节点包含一个指向链表下一节点的指针。链表的最后一个节点的指针字段的值为NULL,提示链表后面不再有其他节点。在你找到链表的第一个节点后 ,指针可以遍历所有节点。以根指针表示链表的起始位置。根指针只是个指针,不包含任何数据。节点声明如下:

typedef struct NODE
{
  struct NODE * link;
  int value;
}Node;

2.2 双链表

单链表的替代方案就是双链表。在一个双链表中,每个节点都包含两个指针——指向前一个节点的指针和指向后一个节点的指针。这可以使我们以任何方向遍历双链表。

双链表的节点声明如下:

typedef struct NODE
{
  struct NODE *fwd;
  struct NODE *bwd;
  int value;
}Node;

为根指针声明一个完整的节点更为方便,只是它的值字段绝不会被使用。如果链表为空,这两个指针都为NULL。为了把一个新节点插入到双链表中,我们必须修改四个指针。新节点的前向和后向link字段必须被设置,前一个节点的后向link字段和后一个节点的前向link字段也必须进行修改 ,使它们指向这个新节点。

posted @ 2018-10-18 10:54  快乐工作快乐玩  阅读(275)  评论(0编辑  收藏  举报