链表的形式一般如下图:
一个链表是由一个个节点构成,一个典型的节点包含数据块和指向下一个节点的指针。
假如为以上节点编号,从左至右分别为1001,1002,1003,1004,1005,其中Next Pointer存放的即为下一个节点的地址,1001的Pointer指向1002,1002的指向1003,直到1005的Pointer指向NULL,即链表的结束。
而在C实现静态链表,则如下代码:
#include <stdio.h>
struct lb_data
{
int data;
struct lb_data *next; // 定义指向下一个节点的指针
};
int main()
{
struct lb_data a,b,c,*head;
// 初始化数据
a.data=10101;
b.data=10102;
c.data=10103;
head=&a;
a.next=&b;
b.next=&c;
c.next=NULL; // 最后一个节点,指向的下一个即为NULL,表示链表的结束
do
{
printf("%ld %5.1f\n",head->data);
head=head->next;
}while(head);
return 0;
}
这里的节点使用一个lb_data结构来表示,其中data为节点数据部分,而next则是指向下一个节点的地址。
而我们要获得一个链表的数据,只需要知道一个链表的首地址,而链表的首地址,即head是指向第一个节点的地址。