2 seriousrt SeriousRT 于 2016.03.25 21:49 提问

数据结构单链表关于头指针的问题

图片说明typedef struct LNode{

ElemType data;
struct LNode *next;
}LNode,*LinkList;
L=(LinkList)malloc(sizeof(LNode));

问题:我们知道L->data是头结点的数据域,可是一般不会放有效数据,从这点我就产生了疑问L也是 LinkLIst类型的,所以
我认为头指针L也应当存在data域和next域。存在的话怎么提取头指针L的data域和next域的数据?

2个回答

bealing
bealing   Rxr 2016.03.25 22:19
已采纳

单链表的添删改查,可以采用头指针,也可以采用头结点(第一个节点不存数据)
头结点的优点在于插入和删除不用处理头指针为空(不可能为空)的特殊情况
如果用头指针的话,提取头指针L的data域和next域的操作和普通节点一样,L->data,L->next

SeriousRT
SeriousRT   2016.03.25 22:39

图片说明

bealing
bealing 头指针指向的节点才有数据域和指针域,如果单单说头指针的话,它只是一个占机器字长的变量,存的是地址,哪来的指针域、数据域
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
数据结构——单链表头指针与头结点
在单链表的基本操作中,我们在实现时,往往在第一个结点(含有有效数据)之前添加另外一个结点,也就是头结点。同时我们称指向头结点的指针为头指针。结构如下图所示: 头节点中的数据域可以存储链表长度等额外的信息,也可以不存储任何信息。 头结点即链表中的第一个节点(注意头节点不同于与第一个元素),而头指针则是指向头结点的指针(有头结点的情况下)。任何一个链表实现中,可以没有头结点,但是不
数据结构——链表(头指针、头结点)
链表 头指针 头结点
数据结构中的头结点、头指针、开始结点有什么区别
数据结构  开始结点是指链表中的第一个结点,它没有直接前驱 头指针是指指向开始结点的指针(没有头结点的情况下)。一个单链表可以由其头指针唯一确定,一般用其头指针来命名单链表 头结点是在链表的开始结点之前附加的一个结点。有了头结点之后头指针指向头结点,不论链表是否为空,头指针总是非空,而且头结点的设置使得对链表的第一个位置上的操作与在表中其它位置上的操作一致
对链表的操作(数据结构线性表算法设计练习)
/*1.有一个单链表(不同结点的数据域值可能相同),其头指针为head,编写一个函数计算数据域为x的结点个数*/ #include #include using namespace std; struct node{ int data; struct node *next; }; struct node *head; /*计算数据域为x的结点个数*/ int List_cou
没有头结点的单链表[c语言实现]
#include <stdio.h> #include <stdlib.h>/* * 单链表是线性表链式存储的一种,其储存不连续。 * 单链表的数据结构中包含两个变量:数据和指向下一结点的指针。 * 一个结点只知道他的下一个结点的地址。 * 一个单链表必须有一个头指针指向该单链表中的第一个结点,否则链表会在内存中丢失。 */typedef int ElementData;typedef s
单链表的头结点和头指针
当链表的每个结点只包含一个指针域时,此链表就是单链表。在单链表的开始结点之前附设一个类型相同的结点,称之为头结点。头结点的数据域可以不存储任何信息,头结点的指针域存储指向开始结点的指针(即第一个元素结点的存储位置)。 头指针是指向第一个结点的指针,链表中可以没有头结点,但是不能没有头指针。 头结点的作用: 1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指
【数据结构】头插法建立单链表
#include<stdio.h> #include<malloc.h> #include<stdlib.h> struct ListNode { char data;//数据域 struct ListNode* next;//指针域 };//头插法建立单链表 struct ListNode*CreateList() { char ch; struct ListN
数据结构链表自测题——2014-5-5
一元稀疏多项式以循环单链表按降幂排列,结点有三个域,系数域coef ,指数域exp和指针域next;现对链表求一阶导数,链表的头指针为ha,头结点的exp域为–1。 derivative(ha) { q=ha ; pa=ha->next; while(( (1) )) { if ( (2)) { ( (3)); free(pa); pa= ( (4) ); } else{ pa->coe
单链表存在环的问题
问题给定一个单链表,只给出头指针header 判断链表是否存在环 求环的长度 求环的连接点 求带环链表的长度 // 简单的链表定义及生成带环链表函数 typedef struct Node { struct Node *next; } node;node* makeNode() { node * pNode = (node*)malloc(sizeof(node
(含有头指针以及尾指针)单链表各类功能的实现
对单链表实现如下功能: void InitList(List *list); //初始化单链表 bool push_back(List *list,ElemType x); //尾插法 void show_seqlist(List *list); //显示链表内容 bool push_front(List *list,ElemType x);//头插法 b