单向链表添加元素操作
创建单向链表
先创建链表并且初始化
添加元素操作
Size一个都没有的时候
证明是空链表
前插法
意思就是往前添加元素
第一步 : 创建结点
可以用C++ 的 new 创建结点 或者 用面向过程 的 function 来 创建
函数声明
//创建单向链表结点
//创建链表头结点的函数
//参数:LinkNode* where = nullptr
//LinkNode* where目的是给list->next赋值、不初始化数据域
LinkNode* creatorLinkNode(LinkNode* where = nullptr);//创建单向链表结点
//参数:const ElemType &elem
//const ElemType &elem 目的是给 新结点的数据域初始化、不初始化指针域
LinkNode* creatorLinkNode(const ElemType &elem);
函数实现
LinkNode* creatorLinkNode(LinkNode* where){LinkNode* node = new LinkNode;node->next = where;return node;}LinkNode* creatorLinkNode(const ElemType& elem) {return new LinkNode{ elem ,nullptr};
}
创建结点
第二步 : 链接结点
链接结点
参数 LinkNode& node, LinkNode& newnode**
链接思路:
如果(node->next)不是空指针
新结点的下一个结点指向传入结点的下一个结点
否则
结点的下一个结点指向新结点
相当于 3->5
4是新结点
4->5
4链接5
3的下一个结点指向4结点
3->4->5
伪代码::
如果(结点的next!=空指针){//为真
新结点的next指针指向 结点的next指针;;
}
结点的next指针指向 新结点;
函数声明
/*
链接结点
参数 LinkNode*& node, LinkNode*& newnode
链接思路:
如果(node->next)不是空指针
新结点的下一个结点指向传入结点的下一个结点
否则
结点的下一个结点指向新结点相当于 3->54是新结点4->54链接53的下一个结点指向4结点3->4->5if(node->next){newnode->next = node->next;} node->next = newnode;
*/
void Link(LinkNode*& node, LinkNode*& newnode)
函数实现
void Link(LinkNode*& node, LinkNode*& newnode){if (node->next) {newnode->next = node->next;}node->next = newnode;
}
链接 第一步
链接 第二步
第三步 把链表的头结点传递到Link函数
Link(List.list, Newnode);
第四步 链表的个数+1
++List.size;
前插法 代码
//LinkNode* &Newnode 主调函数 分配内存
void LinkListInsert_froot(LinkList& List, LinkNode* &Newnode) {Link(List.list, Newnode);++List.size;
}
尾插法
意思就是靠后添加元素
第一步 : 创建结点
可以用C++ 的 new 创建结点 或者 用面向过程 的 function 来 创建
函数声明
//创建单向链表结点
//创建链表头结点的函数
//参数:LinkNode* where = nullptr
//LinkNode* where目的是给list->next赋值、不初始化数据域
LinkNode* creatorLinkNode(LinkNode* where = nullptr);//创建单向链表结点
//参数:const ElemType &elem
//const ElemType &elem 目的是给 新结点的数据域初始化、不初始化指针域
LinkNode* creatorLinkNode(const ElemType &elem);
函数实现
LinkNode* creatorLinkNode(LinkNode* where){LinkNode* node = new LinkNode;node->next = where;return node;}LinkNode* creatorLinkNode(const ElemType& elem) {return new LinkNode{ elem ,nullptr};
}
创建结点
循环找到末尾结点
while (current->next){current = current->next;}
第二步 : 链接结点
链接结点
参数 LinkNode& node, LinkNode& newnode**
链接思路:
如果(node->next)不是空指针
新结点的下一个结点指向传入结点的下一个结点
否则
结点的下一个结点指向新结点
相当于 3->5
4是新结点
4->5
4链接5
3的下一个结点指向4结点
3->4->5
伪代码::
如果(结点的next!=空指针){//为真
新结点的next指针指向 结点的next指针;;
}
结点的next指针指向 新结点;
函数声明
/*
链接结点
参数 LinkNode*& node, LinkNode*& newnode
链接思路:
如果(node->next)不是空指针
新结点的下一个结点指向传入结点的下一个结点
否则
结点的下一个结点指向新结点相当于 3->54是新结点4->54链接53的下一个结点指向4结点3->4->5if(node->next){newnode->next = node->next;} node->next = newnode;
*/
void Link(LinkNode*& node, LinkNode*& newnode)
函数实现
void Link(LinkNode*& node, LinkNode*& newnode){if (node->next) {newnode->next = node->next;}node->next = newnode;
}
把Current传递到Link函数
链接 第一步
链接 第二步
Link(Current, Newnode);
第四步 链表的个数+1
++List.size;
尾插法 代码
void LinkListInsert_back(LinkList& List, LinkNode*& Newnode) {LinkNode* current = List.list;while (current->next){current = current->next;}Link(current, Newnode);++List.size;
}
``
单向链表添加元素操作相关推荐
- C语言实用算法系列之学生管理系统_单向链表内操作_选择排序
单向链表实现 #include <stdio.h> #include <malloc.h>typedef int DATA;struct SNode {DATA data;SN ...
- C语言实用算法系列之学生管理系统_单向链表内操作_提取排序规则
代码 后续文章的排序均采用速度较快的选择排序算法. #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <strin ...
- Day 62 数据结构(单向链表,单向循环链表,双向链表)
1. 单向链表的设计 例程:创建一个动态单向链表 1.定义链表结点:数据域+指针域 2.定义链表结构体:头结点指针+结点数 3.初始化链表 4.指定位置插入新数据 5.删除指定位置数据 6.获取链表长 ...
- (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作
http://blog.csdn.net/fisherwan/article/details/25557545 前段时间用C语言实现了链表的相关操作,但是发现当时挺清楚的,过了一段时间又忘的差不多了, ...
- 数据结构与算法-单向链表的修改和删除操作
单向链表的修改和删除操作 单向链表的修改 单向链表的删除 单向链表的修改 在上面的代码基础上定义几个英雄 HeroNode hero1 = new HeroNode(1,"宋江", ...
- Golang 操作单向链表的应用实例
代码: /*使用带head头节点的单向链表实现-水浒传英雄排行榜管理:1)完成对英雄人物的增删改查操作.2)第一种方法:在添加英雄时,直接添加到链表的尾部3)第二种方法:在添加英雄时,根据排名将英雄插 ...
- 单向链表的创建和操作
一:链表的基本概况: *以链表为主的链式存储是线性存储的重要方式之一*/ 1.链表是以一个个结点来存储数据的 2.每个节点包含 data (数据域),next (指针域) 3.next 存放下一个结点 ...
- 单向链表的有关操作(链式存储结构)
⑴随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序). ⑵遍历单向链表. ⑶把单向链表中元素逆置(不允许申请新的结点空间). ⑷在单向链表中删除所有的偶数元素结点. ⑸编写在非递减有序链表 ...
- 单向链表操作详解(二)[The End]
/* 接着讲(测试编译时,请把相应的函数及测试代码放到上一讲代码的相关地方): 排序(选择.插入.冒泡) 插入(有序) */ /* ================================== ...
最新文章
- 简明 MongoDB 入门教程
- C语言结构-演员请就位
- Gridcontrol新增行选中有关问题
- SAP CRM读取产品主数据360度数据的API
- php 垃圾回收机制----写时复制和引用计数
- 垃圾回收算法与垃圾回收器
- jdbc preparestatement 执行多条语句_MyBatis执行器
- lua table remove元素的问题
- 【海康威视】WPF客户端二次开发:【1】监控视频画面预览(SDK初始化、设备登录、监控画面预览)
- 数据结构线性表-----静态链表
- 机器学习十大算法实现python代码汇总
- python 实现改变excel文件列宽
- linux打开ppt文件命令,ubuntu下命令行打开pdf/doc/ppt文件
- 蚂蚁集团副总裁,任复旦大学人工智能学院院长!
- 前端实战:React 多页签缓存处理
- tkinter-Text详解
- mysql多个嵌套查询
- osr和Pyproj库的简单使用
- 什么是私有云?您应该知道的 6 个优势
- QCC30DFU流程android说明,qcc512x qcc302x qcc303x earbud 软件GAIA OTA DFU 空中升级实现方法以及升级步骤...