链表:带头结点和不带头结点
这是我对于这两者区别的一些思考,欢迎大家交流指正
带头结点实现初始化:
link * initLinkTou(){//声明一个头结点link *temp=(link*) malloc(sizeof (link));//让头指针指向头结点link *p=temp;for (int i = 1; i < 5; ++i) {link *a=(link*) malloc(sizeof (link));a->elem=i;a->next=NULL;temp->next=a;temp=temp->next;}return p;
}
不带头结点实现初始化:
link * initLink(){link *p=NULL; //创建头指针link *temp=(link*)malloc(sizeof (link)); //创建首元结点//首元结点初始化temp->elem=1;p=temp;for (int i = 1; i < 5; ++i) {link *a=(link*) malloc(sizeof (link));a->elem=i;a->next=NULL;//将temp结点与新建立的a结点建立逻辑关系temp->next=a;temp=temp->next;}return p;
}
具体实现的区别分析:
需要注意的是,link * p所定义的单纯只是一个link类型的指针变量,就如int * i,float * f一样,没有具体赋值
1.带头结点link * p=temp赋值之后,指向的就是头结点temp地址,使用p->next定义的就是首元节点。
2.不带头结点link * p=temp赋值之后,直接指向的就是首元结点,如果跟上面一样直接用p->next定义下一个结点的话,就会跳过首元节点。所以需要先对首元结点初始化,然后再使用link * p=temp赋值,再使用p->next循环赋值后续结点。
对于带头结点的插入到第一个位置的代码:
//p = head;
x->next = head->next;
head->next = x;
插入其他结点
x->next = p->next;
p->next = x;
若令p=head,则带有头结点的链表,可以实现代码复用,减少分支。
对于不带头结点的插入到第一个位置的代码:
x->next = head;
head = x;
插入其他结点
x->next = p->next;
p->next = x;
链表:带头结点和不带头结点相关推荐
- 数据结构:单链表——带头结点与不带头结点步骤详解
单链表:带头结点与不带头结点详解 在本人的另一篇文章中,通过java实现了带头结点和不带头结点的单链表,有兴趣的小伙伴可以去看下数据结构(一):链表(Linked List) 这两天回顾下链表的知识, ...
- 单链表———带头结点跟不带头结点的区别
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.单链表:带头结点跟不带头结点 二.使用步骤 总结 前言 数据结构中单链表的创建 带头结点跟不带头结点的区别 一.单 ...
- 算法与数据结构之带头结点和不带头结点单链表存在的问题
带头结点和不带头结点单链表注意的小细节 在写不带头结点的单链表中发现了一个问题,这个问题在带头结点的单链表中也存在,那就是值传递的问题. 首先来看一下 #include<stdio.h> ...
- 删除带头结点单链表中倒数第k个结点
[问题描述] 设有头结点单链表,删除单链表中倒数第k个结点. [输入形式] 第一行重复输入整数建立带头结点的单链表,输入字符结束. 第二行输入一个整数k,表示删除倒数第k个结点. [输出形式] 输出删 ...
- 单链表:带头结点和不带头结点 总结
写在前面: 一直以来,带头结点和不带头节点的单链表的操作实现困扰着我.在没有理解和实现之前,光凭思考真的是很难理解清楚 1.两者之间代码的差异: 2.带不带头结点的区别: 3.带头结点之后,什么情况下 ...
- 【考研】分清带头结点和不带头结点的单链表
CSDN话题挑战赛第2期 参赛话题:学习笔记 前言 为分清带结点与不带头结点的单链表操作,本文以图文和表格形式描述了两者之间的区别.考研中,数据结构的单链表操作是重要考点,其中,比较常考带头结点的链表 ...
- 单链表的创建(带头结点和不带头结点)
伪代码: 创建结点 创建头结点(单独定义一个结构体来保存单链表的首地址和尾地址还有链表的长度) 创建带头结点的单链表 注意:创建头结点中的首尾指针都要指空,长度等于0: 从终端接收数据 创建结点保存数 ...
- 带头结点和不带头结点的链表代码模板
目录 对之前博客的完善,之前是根据课本看着打的 Common.h 不带头结点的版本 带头结点的版本 对之前的博客的完善,之前是根据课本看着打的 Common.h #ifndef COMMON_H #d ...
- c语言带头节点单链表创建,C语言建立带头结点的单链表
满意答案 TS老妹儿 2017.08.31 采纳率:57% 等级:9 已帮助:1719人 单链表的生成有2种方式:头插法和尾插法. 1.头插法/************************* ...
最新文章
- POJ 2182 Lost Cows (求序列第k大)
- Java学习笔记(十)--控制台输入输出
- 软件项目管理0813:法律合规
- mysql 索引查询_mysql索引的建立和查询语句优化
- 机器学习速成课程 | 练习 | Google Development——编程练习:逻辑回归
- linux 磁盘分区对齐,linux查看硬盘4K对齐方法
- 《redis-php中文参考手册》-php版
- 探讨一个好算法——找出一百万个数字中十个最大数字的算法
- VRay高级材质素材分享,精选,热门
- 深度信念网络_静园5号院前沿讲座 | Geoffery Hinton谈深度信念网络
- 用电脑开热点启用电脑无线配置
- 无线产品认证logo
- 3.《程序猿扯淡系列》约会的艺术--教你如何逆袭
- MCE公司:抗真菌新策略:抑制线粒体磷酸盐转运
- CASIO—4500P计算器在公路工程测量中的应用
- 个人社保缴纳接口 保公积金缴费数据实现
- 《苍炎-羽生结弦》读书摘记
- 北京一互联网公司被端,所有开发被全部带走!
- 8255a初始化c语言程序,8255A的c语言程序.doc
- 微信公众号开发(公交线路查询-JAVA