创建单向链表

先创建链表并且初始化

添加元素操作

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;
}
``

单向链表添加元素操作相关推荐

  1. C语言实用算法系列之学生管理系统_单向链表内操作_选择排序

    单向链表实现 #include <stdio.h> #include <malloc.h>typedef int DATA;struct SNode {DATA data;SN ...

  2. C语言实用算法系列之学生管理系统_单向链表内操作_提取排序规则

    代码 后续文章的排序均采用速度较快的选择排序算法. #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <strin ...

  3. Day 62 数据结构(单向链表,单向循环链表,双向链表)

    1. 单向链表的设计 例程:创建一个动态单向链表 1.定义链表结点:数据域+指针域 2.定义链表结构体:头结点指针+结点数 3.初始化链表 4.指定位置插入新数据 5.删除指定位置数据 6.获取链表长 ...

  4. (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作

    http://blog.csdn.net/fisherwan/article/details/25557545 前段时间用C语言实现了链表的相关操作,但是发现当时挺清楚的,过了一段时间又忘的差不多了, ...

  5. 数据结构与算法-单向链表的修改和删除操作

    单向链表的修改和删除操作 单向链表的修改 单向链表的删除 单向链表的修改 在上面的代码基础上定义几个英雄 HeroNode hero1 = new HeroNode(1,"宋江", ...

  6. Golang 操作单向链表的应用实例

    代码: /*使用带head头节点的单向链表实现-水浒传英雄排行榜管理:1)完成对英雄人物的增删改查操作.2)第一种方法:在添加英雄时,直接添加到链表的尾部3)第二种方法:在添加英雄时,根据排名将英雄插 ...

  7. 单向链表的创建和操作

    一:链表的基本概况: *以链表为主的链式存储是线性存储的重要方式之一*/ 1.链表是以一个个结点来存储数据的 2.每个节点包含 data (数据域),next (指针域) 3.next 存放下一个结点 ...

  8. 单向链表的有关操作(链式存储结构)

    ⑴随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序). ⑵遍历单向链表. ⑶把单向链表中元素逆置(不允许申请新的结点空间). ⑷在单向链表中删除所有的偶数元素结点. ⑸编写在非递减有序链表 ...

  9. 单向链表操作详解(二)[The End]

    /* 接着讲(测试编译时,请把相应的函数及测试代码放到上一讲代码的相关地方): 排序(选择.插入.冒泡) 插入(有序) */ /* ================================== ...

最新文章

  1. 简明 MongoDB 入门教程
  2. C语言结构-演员请就位
  3. Gridcontrol新增行选中有关问题
  4. SAP CRM读取产品主数据360度数据的API
  5. php 垃圾回收机制----写时复制和引用计数
  6. 垃圾回收算法与垃圾回收器
  7. jdbc preparestatement 执行多条语句_MyBatis执行器
  8. lua table remove元素的问题
  9. 【海康威视】WPF客户端二次开发:【1】监控视频画面预览(SDK初始化、设备登录、监控画面预览)
  10. 数据结构线性表-----静态链表
  11. 机器学习十大算法实现python代码汇总
  12. python 实现改变excel文件列宽
  13. linux打开ppt文件命令,ubuntu下命令行打开pdf/doc/ppt文件
  14. 蚂蚁集团副总裁,任复旦大学人工智能学院院长!
  15. 前端实战:React 多页签缓存处理
  16. tkinter-Text详解
  17. mysql多个嵌套查询
  18. osr和Pyproj库的简单使用
  19. 什么是私有云?您应该知道的 6 个优势
  20. QCC30DFU流程android说明,qcc512x qcc302x qcc303x earbud 软件GAIA OTA DFU 空中升级实现方法以及升级步骤...

热门文章

  1. 2022十二月GBase8a第二次阶段考试02-SQL基础
  2. Unity技术-开发规范
  3. 本周任务--LAMP原生环境搭建,个人微博WordPress博客
  4. 浅谈数字音视频传输网络——AVB
  5. Vivado 多路选择器(含测试代码)
  6. error: unterminated #ifndef
  7. 迅雷5.0.0.72 广告条移除
  8. 入秋了,给大家一些生活小常识_陕南赤子_新浪博客
  9. 动态规划状态机模型:股票买卖I
  10. jQuery点击网页任意空白区域隐藏div