链表中 的 头指针 和 头结点 是不一样的

谢谢 黄队长(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.以上是我的理解~如有错误和不妥之处,还请大家批评指导~谢谢!!!~

 

以上~~~

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值