关闭

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

标签: structnull
1179人阅读 评论(3) 收藏 举报
分类:

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

 

以上~~~

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:73374次
    • 积分:1003
    • 等级:
    • 排名:千里之外
    • 原创:33篇
    • 转载:17篇
    • 译文:0篇
    • 评论:16条
    文章分类
    最新评论