问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

加一个节点在空链和加一个节点在链头是一样的吗

发布网友 发布时间:2022-10-03 13:55

我来回答

1个回答

热心网友 时间:2023-10-10 15:41

加一个节点在空链和加一个节点在链头是不一样的。
头节点说到底也只是一个结构变量,当然可以赋值了,但是这种操作没有意义。头节点的存在只是更好的管理链表,并不参与数据结构的调整。
头结点的数据域可以不存储任何信息,头结点的指针域存储指向第一个结点的指针(即第一个元素结点的存储位置)。头结点的作用是使所有链表(包括空表)的头指针非空,并使对单链表的插入、删除操作不需要区分是否为空表或是否在第一个位置进行,从而与其他位置的插入、删除操作一致。

折叠编辑本段常用方法
建立单链表的常用方法有两种。下面以顺序存储为例来叙述。

(1) 头插法建表

该方法从一个空表开始,读取数组a中的字符,生成新结点,将读取的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直到结束为止。算法如下:

void CreateListF(Snode *&L, ElemType a[], int n)

{ Snode *s; int i;

L = (Snode *) malloc(sizeof(Snode));

L->next = NULL;

for (i=0; i1;i--)可让节点次序与原数组元素顺序相同。

{ s = (Snode *)malloc(sizeof(Snode));

s->data = a[i];

s->next = L->next;

L->next = s;

}

}

(2) 尾插法建表

头插法建立链表虽然算法简单,但生成的链表中结点的次序和原数组元素的顺序相反,若希望两者次序一致,可采用尾插法。该方法是将新结点插到当前链表的表尾上,为此必须增加一个尾指针r,使其始终指向当前链表的尾结点。算法如下:

void CreateListR(Snode *&L, ElemType a[], int n)

{ Snode *s, *r; int i;

L = (Snode *) malloc(sizeof(Snode));

L->next = NULL;

r = L;

for (i=0; i
{ s = (Snode *)malloc(sizeof(Snode));

s->data = a[i];

r->next = s;

r = s;

}

r->next = NULL;

}

折叠编辑本段作用
头结点是链表里面第一个结点,他的数据域可以不存放任何信息(有时候也会存放链表的长度等等信息),他的指针区域存放的是链表中第一个数据元素的结点(就是传说中的首元结点)存放的地址。

1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,头结点的指针域的数值为NULL.

2、是为了方便单链表的特殊操作,插入在表头或者删除第一个结点.这样就保持了单链表操作的统一性!

3、单链表加上头结点之后,无论单链表是否为空,头指针始终指向头结点,因此空表和非空表的处理也统一了,方便了单链表的操作,也减少了程序的复杂性和出现bug的机会 。

4、对单链表的多数操作应明确对哪个结点以及该结点的前驱。不带头结点的链表对首元结点、中间结点分别处理等;而带头结点的链表因为有头结点,首元结点、中间结点的操作相同,从而减少分支,使算法变得简单,流程清晰。对单链表进行插入、删除操作时,如果在首元结点之前插入或删除的是首元结点,不带头结点的单链表需改变头指针的值,在TurboC算法的函数形参表中头指针一般使用指针的指针(在C++中使用引用&);而带头结点的单链表不需改变头指针的值,函数参数表中头结点使用指针变量即可,对初学者更易接受。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
焦作有哪些旅行景点值得一去? 河南穿古装去的地方 AE入门从学会套模板开始,AE模板套用简易教程,看起来复杂的AE其实也很... ae怎么套用模板ae模版的使用方法 北京通州区有什么好玩的地方吗 请问现在有哪些看电影的网站?越多越好~~ 帮初中女儿请假一天讲身体不适,班主任却跟别的老师讲她得了大病,该如何... 梦见家中被盗空只剩一件绿色衣的预兆 梦见美丽沙穗 美版4s内置卡贴有什么危害? SNode是什么链表? snode 大家帮忙想下是什么意思··· 我想问问抖音关注请求在哪里同意 查带土字旁的女孩名字 带土字旁的女孩名字有哪些 word 鼠标变成 斜向上的空心箭头时 选择不了内容了!怎么把它变成输入状态鼠标 筷子兄弟《小苹果》mv里是什么字体。。。 教你免费修改小米手机字体 健康码在一个微信上解邦可以在另一个上邦吗? 什么是高压电 高压电介绍 有糖尿病的人可以吃九制陈皮吗? 天津什么地方有卖 199元的U盘 (台电 或 奥美嘉) 天津河东区哪些商店有卖U盘的 天津U盘价格大概多少,我朋友想买个 收生解释及造句 点收的造句 苹果14.6和15.6哪个好 餐桌脚,办公椅脚这些属于五金配件的一种吗? 谁知道这个桌子上的脚,叫什么名称? 银行卡里的白金卡,钻石卡,无限卡,,那个最好,能排一下吗 国际商务专业主要学什么 国际商务专业简介 带你认识40种最常见的香料和它们的基本特性及经典配方 大家觉得硬黄芙蓉王怎么样 如何知道注册时间 芙蓉王黄硬盒,大家觉得味道怎样? 车辆扣分什么查询 如何查询自己驾照扣了多少分 一个人吃不完一整条牛尾怎么办? 买了一整条牛尾,要等下个月送别人,不知道怎么存放? 比喻很多年的工作成语 《老子他说》读书笔记43——物或损之而益,或益之而损 3开头的芙蓉王味道跟5开头的不一样,(硬黄),编码不一样有什么不同? 蓝色硬盒的芙蓉王好吗? 天语手机R912视频编码?视频格式?屏幕大小,比特率等等… 论24元硬芙蓉王,这么难抽,为什么这么多人喜欢 什么叫本科.专科和考研? 网贷平台是怎么封冻我的的?我该如何申诉? 奶酪和桃蛋有什么区别 奶酪和桃蛋,桃美人怎么辨别? 多肉植物桃蛋和奶酪群生的根大不大 这个是奶酪吗,是的话,是什麽奶酪谢谢!可见叶子(老叶子)