C++:链表(有头链表)
介绍
把链表分为无头链表和有头链表。
无头链表:所有的节点都包含了有效数据,上一篇文章中演示代码使用的就是无头链表。
有头链表:用一个固定的头节点来指代整个链表,所有的对象都挂在这个头节点下面,而头节点不包含有效数据。
有头链表优点:
可以简化链表操作,当链表的对象个数为0时,无头链表不好表示。
演示代码
创建有头链表,封装函数,通过有头链表的链表头添加节点对象
#include <stdio.h>
//结构体对象
struct Student
{
char name[32];
int age;
Student *pNext;
};
//查找链表中指定age的数据,返回指向该节点的地址
Student * find(Student* p, int age)
{
bool bFind = false; //用于判断是否找到
while(p)
{
if (p->age == age)
{
bFind = true;
break;
}
p = p->pNext;
}
if (bFind)
{
return p;
}
else
{
return NULL;
}
}
//通过链表头往链表中添加一个节点
void addNode(Student* phead,Student *obj)
{
//定位到链表的最后一个节点
while(phead)
{
if (phead->pNext == NULL)
{
break;
}
phead = phead->pNext;
}
//添加该节点到链表的尾部
phead->pNext = obj;
}
int main()
{
//创建3个对象
Student stu[3] = {{"aaa", 30, 0},{"bbb", 31, 0},{"ccc", 32, 0}};
//创建有头链表的链表头
Student pHead = {"head", 0, 0};
//添加节点
addNode(&pHead, &stu[0]);
addNode(&pHead, &stu[1]);
return 1;
}
欢迎加群交流:C/C++开发交流
C++:链表(有头链表)的更多相关文章
- 单链表&双链表的头插入&尾插入
#include<stdio.h> #include"stdlib.h" struct student { int data; struct student *pnex ...
- C语言:根据形参c中指定的英文字母,按顺序打印出若干后继相邻字母,-主函数中放入一个带头节点的链表结构中,h指向链表的头节点。fun函数找出学生的最高分-使用插入排序法对字符串中的字符进行升序排序。-从文件中找到指定学号的学生数据,读入次学生数据,
//根据形参c中指定的英文字母,按顺序打印出若干后继相邻字母,输出字母的大小与形参c一致,数量由形参d指定.例如:输入c为Y,d为4,则输出ZABC. #include <stdio.h> ...
- Leetcode刷题之链表增加头结点的前缀节点
链表之增加头结点的前缀节点 在许多链表题中往往需要在题目给的头结点之前增加一个前缀节点 通常在删除链表和头结点需要交换时需要用到这一操作 因为增加这个节点就避免了对删除头结点这种特殊情况的特殊处理 而 ...
- JAVA 链表操作:单链表和双链表
主要讲述几点: 一.链表的简介 二.链表实现原理和必要性 三.单链表示例 四.双链表示例 一.链表的简介 链表是一种比较常用的数据结构,链表虽然保存比较复杂,但是在查询时候比较便捷,在多种计算机语言都 ...
- 数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现
0. 数据结构图文解析系列 数据结构系列文章 数据结构图文解析之:数组.单链表.双链表介绍及C++模板实现 数据结构图文解析之:栈的简介及C++模板实现 数据结构图文解析之:队列详解与C++模板实现 ...
- 使用C语言描述静态链表和动态链表
静态链表和动态链表是线性表链式存储结构的两种不同的表示方式. 静态链表的初始长度一般是固定的,在做插入和删除操作时不需要移动元素,仅需修改指针,故仍具有链式存储结构的主要优点. 动态链表是相对于静态链 ...
- C语言 Linux内核链表(企业级链表)
//Linux内核链表(企业级链表) #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> ...
- 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列
1.我的思路先将b链表连接在a链表的后面,这个很容易实现,将a链表最后的结点中的p.next改为指向b链表的头结点即可. 再将这个新链表用选择排序即可. 代码如下: #include<stdio ...
- python数据结构链表之单向链表
单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域.这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值. 表元素域ele ...
随机推荐
- dbcp_c3p0连接mysql8.0.13
背景 学习数据库的使用,上次没有记录,现在都回忆不起来了,所以这次重新学的时候顺便记录下. 配置环境 win10 jdk11 idea mysql8.0.13 DBCP连接使用 用配置文件目前我连接不 ...
- Hbase 错误记录分析(1) region超时问题
错误现象: 默认等待时间是60秒,超过这个时间就报超时问题了.因此需调整超时时间,默认为60秒,在配置文件 hbase-site.xml中: 调整成10分钟 <property> & ...
- [TJOI2019]甲苯先生的滚榜——非旋转treap
题目链接: [TJOI2019]甲苯先生的滚榜 要求维护一个二维权值的集合并支持单点修改,用平衡树维护即可. 因为$n\le 10^6$但$m\le 10^5$,所以最多只有$10^5$个人被操作. ...
- ICEM-轴(周期复制网格)
原视频下载地址:https://yunpan.cn/cqMnfpqQQdZZI 访问密码 802b
- IIS Express(电脑无管理员权限如何启用VS调试)
转载页面:https://www.cnblogs.com/xbblogs/p/4756552.html(详细版) 直接按照红色字体步骤执行,其他字体可先忽略 出问题再详细看 1.设置配置文件 ...
- mac解压7z格式文件
brew直接安装解压工具 $ brew search 7z p7zip $ brew install p7zip ==> Downloading https://downloads.source ...
- telnet nmap netstap
yum install nmap [root@10-13-109-236 ~]# nmap localhost Starting Nmap 6.40 ( http://nmap.org ) at 20 ...
- VS Code 使用技巧[转载]
原文:VS Code 快捷键(VS Code Shortcuts.pdf) 常用 General 按 Press 功能 Function Ctrl + Shift + P,F1 显示命令面板 Show ...
- 在基于acpi的linux系统上如何检查当前系统是否支持深度睡眠?
答: 执行以下命令: # dmesg|grep -i acpi |grep -i supports (S3表示支持深度睡眠) ACPI: (supports S0 S1 S3 S4 S5)
- IDEA新建本地项目关联远程git仓库
现在远程git仓库创建一个repository,然后本地创建项目,最后进行关联.三板斧,打完收工. 第一步.第二步地球人都知道,略过不表,第三步比较关键,举个例子: 0.创建本地Git仓库:VCS - ...