C++单链表的基本算法
来源:互联网 发布:淘宝店pc端怎么装修 编辑:程序博客网 时间:2024/06/05 16:04
线性表是最简单,最常用的一种数据结构。线性表的逻辑结构是n个数据元素的有限序列(a1,a2,…,an)。而线性表的物理结构,我们已经学习过顺序表,也就是数组 ;另一种线性表的物理结构——链表 。
什么是单链表
单链表(Singly Linked list)也称线性链表。每个元素占用一个节点(Node)。一个节点至少包含两个域,一个域存放数据信息info,其数据类型由应用问题决定,另一个存放指向该链表中下一个节点的指针link。
单链表的c++实现思路
◆ 1、单链表节点的数据类型
typedef int Datatype; //节点的数据为整型
struct node
{
Datatype info;//节点的数据信息
node *link;
//指向下一个节点的指针,是结构自身的指针类型,决不能是结构自身类型
};
◆ 2、由节点形成单链表
单链表的第一个节点首先通过new运算获得,并用链表的表头指针head指向, head在使用中必须妥善保存,千万不可丢失,否则单链表整个丢失,内存也发生泄漏。
……//有关node的声明,见上段代码
node *head;
head=new node;
//第一个节点的数据不赋值,则该节点仅作head
head->link=NULL;//指针初始化
单链表后面的节点可以通过插入与删除来维护:只要改变链中节点指针的指向,而无需移动表中的元素,就能实现插入和删除操作。
单链表的基本插入算法
现在已经存在单链表“head”,插新节点时考虑三种情况:
- 新插入节点作为单链表的第一个结点;
- 也有可能新插入节点是中间节点;
- 也有可能新插入节点作为最后一个节点。
首先要先产生新节点:
……//有关node的声明
node *newone;
newone=new node;
newone->info=13;//给该节点的数据赋值
newone->link=NULL;//指针初始化
◆ 1、新节点插在链首 (查看动画演示)
//注意:链表操作次序非常重要
……//node、head、newone的声明及定义,见上面
newone->link=head->link;
Head->link=newone;//注意指针赋值
◆ 2、新节点插在单链表中间
首先用工作指针p找到指定节点,而让指针q指向紧跟其后的节点;新节点插在p、q之间;
node *p,*q;
……//此段代码实现:利用查找算法将p定位在指定节点(稍后将学习)
q=p->link; //注意指针赋值
newone->link=q;
//或newone->link=p->link;这样就不需要q了
p->link=newone;
- C语言 循环单链表各种基本运算的算法
- 《数据结构与算法》-单链表基本操作的C语言实现
- 单链表的基本算法1---C语言实现
- 单链表的基本算法2---C语言实现
- 单链表的基本算法
- 基本排序算法的C语言实现
- 基本入门的C/C++算法总结
- C语言的一些基本算法
- 基本排序算法的C语言实现
- 树的基本算法(C语言版)
- Objective-C 基本算法
- 单链表的基本算法实现。
- C++单链表的基本算法
- C++单链表的基本算法
- C 单链表的基本运算
- 【C++】单链表的基本操作
- C语言 双链表各种基本运算的算法
- 基本排序算法的实现代码(c++)
- nginx+tomcat nginx 504 Gateway Time-out的方法
- Python初学之字典
- 卷积
- List对象remove方法的使用
- 暑假集训日记--8.2--搜索
- C++单链表的基本算法
- UE4_事件调度器
- python小白进阶三:主成分分析(PCA)
- day_14 C语言字符串处理和清空缓冲区
- JavaScript 创建对象的七种方式
- MySQL字符型数字比较大小
- bLue的苹果--有点坑
- 《机器学习实战》学习笔记-第三章-决策树
- 345. Reverse Vowels of a String