谢谢 黄队长(http://blog.csdn.net/huangcongjie) 的 指导, 让困扰我的这个问题:“头结点是什么?头指针是什么?” 得以解决。
// 链表中的 结点的 定义
typedef struct node
{
int item;
struct node* next;
}Node;
// 链表 本身的 结构 的定义
typedef struct Link
{
Node * head;
}Link_Type;
由 以上的 定义可以得出:
/********************** 没用 指针变量的格式 如下**************************/
Node Node_Head; // 定义 一个 结点, 这个 就可以看做是 头结点, 头结点必须是链表中的第一个结点,且它的数据域中一般存放的是链表的长度(类似数组的长度)。
Node_head.item = 0; // 头结点 的 数据域 没有 实际 的 意义, 即 不存 有用的数据, 我这里初始化为0, 也可以初始化为其它整形数据。
Node_head.next = NULL; // 头结点 的 指针域 初始化为空
Link_Type SeqLink; // 定以 一个 链表
SeqLink.head = &Node_head; // 头指针 初始化 为 指向 头结点。 头指针 是指向头结点 或 指向链表中的第一个结点(在没有头结点是)。
/********************** 用 指针变量的格式 如下**************************/
Node *Node_Head = (Node*)malloc(sizeof(Node) * 1); // 别忘分配空间。
if ( NULL == Node_Head) exit(1);
Node_head->item = 0; // 头结点 的 数据域 没有 实际 的 意义, 即 不存 有用的数据, 我这里初始化为0, 也可以初始化为其它整形数据。
Node_head->next = NULL; // 头结点 指针变量 的 指针域 初始化为空
Link_Type *SeqLink = (Link_Type*)malloc(sizeof(Link_Type) * 1); // 定以 一个 链表 指针
if ( NULL == SeqLink) exit(1);
SeqLink->head = Node_head; // 头指针 初始化 为 指向 头结点。 头指针 是指向头结点 或 指向链表中的第一个结点(在没有头结点是)。
总结:
1.头指针 是指向头结点 或 指向链表中的第一个结点(在没有头结点是)。
2.头结点必须是链表中的第一个结点,且它的数据域中的数据无用。
3. 谢谢 黄队长(http://blog.csdn.net/huangcongjie) 的 指导!
4.以上是我的理解~如有错误和不妥之处,还请大家批评指导~谢谢!!!~
以上~~~