• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++中单链表的建立与基本操作

C++中单链表的建立与基本操作

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++单链表,c++单链表的建立,c++单链表的实现,c++循环链表,c++动态链表等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

准备数据

准备在链表操作中需要用到的变量及数据结构

示例代码如下:

我们可以认为,该链表是一个班级学生的记录,其中key表示学号,name为学生的名字,age为年龄。

追加结点

追加结点就是在链表末尾增加一个结点。表尾结点的地址部分原来保存的是空地址NULL,此时需要将其设置为新增结点的地址(即原表尾结点指向新增结点),然后将新增节点的地址部分设置为空地址NULL,即新增结点为表尾。

由于一般情况下,链表只有一个头指针head,要在末尾添加结点就需要从头指针head开始逐个检查,直到找到最后一个结点(即表尾)。

追加结点的操作步骤如下:

(1)首先分配内存地址,保存新增结点。

(2)从头指针head开始逐个检查,直到找到最后一个结点(即表尾)。

(3)将表尾结点的地址设置为新增结点的地址。

(4)将新增结点的地址部分设置为空地址NULL,即新增结点成为表尾。

示例代码如下:

然后,将传入的nodeData保存到申请的内存区域,并设置该结点指向下一结点的指针值为NULL。

插入头结点

插入头结点就是在链表首部添加结点的过程,和在表尾插入结点相反,这个操作是在表头上插入结点,作为头结点。

插入头结点的步骤如下:

(1)首先分配内存,保存新增的结点。

(2)使新增姐弟那指向头指针head所指向的结点

(3)然后使头指针head指向新增结点

示例代码如下:

然后,将传入的nodeData保存到申请的内存区域中,并使新增的结点指向头指针head所指向的结点,然后设置头指针head重新指向新增结点。

查找结点

查找结点就是在链表结构中查找需要的元素。对于链表结构来说,一般可以分为按照结点序号查找和按照关键字查询两类。

按照结点序号查询

即查询链表中的第多少个结点,其示例代码如下:

按照关键字查询

即根据链表中结点的某一个关键字进行查询,我们以查询学生的姓名(name)为例,其示例代码如下:

插入结点

插入结点就是在链表中间部分的位置增加一个结点。

插入结点的步骤如下:

(1)分配内存空间,保存新增的结点。

(2)找到要插入的逻辑位置,也就是找到插在那个结点的后面。

(3)修改插入位置结点的指针,使其指向新增结点,而使新增结点指向原插入位置所指向的结点。

示例代码如下:
   delete

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++实现打印两个有序链表公共部分的方法
  • C++实现单链表删除倒数第k个节点的方法
  • C++实现单链表按k值重新排序的方法
  • C++数据结构与算法之判断一个链表是否为回文结构的方法
  • C++ 数据结构链表的实现代码
  • 深入解析C++的循环链表与双向链表设计的API实现
  • C++实现的链表类实例
  • C++中单链表的建立与基本操作
  • 浅析C++中单链表的增、删、改、减
  • C++ 模版双向链表的实现详解

相关文章

  • 2017-05-28判断本机office安装版本的方法分享
  • 2017-05-28浅析C/C++中sort函数的用法
  • 2017-05-28C语言 坐标移动详解及实例代码
  • 2017-05-28黑客帝国数字雨效果VC6源代码分享
  • 2017-05-28关于大小端、位域的一些概念详解
  • 2017-05-28深入剖析设计模式中的组合模式应用及在C++中的实现
  • 2017-05-28C++函数重载的深入解析
  • 2017-05-28详解C语言中strpbrk()函数的用法
  • 2018-08-06string函数功能实现
  • 2017-05-28对一个数组进行zig-zag重新排列

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 在C++中自定义宏的简单方法
    • 判断整数序列是否为二元查找树的后序遍历结果的解决方法
    • 详解C++编程中的单目运算符重载与双目运算符重载
    • 有关C++头文件的包含顺序研究
    • 在vs2010中,输出当前文件路径与源文件当前行号的解决方法
    • 深入探讨:宏、内联函数与普通函数的区别
    • C++中结构体的类型定义和初始化以及变量引用
    • C语言变长数组 struct中char data[0]的用法详解
    • c语言将字符串中的小写字母转换成大写字母
    • C语言实现颠倒栈的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有