创建单向链表

先创建链表并且初始化

添加元素操作

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. 使用 Application Developer V7 来创建和部署 JSR 168 协作 portlet
  2. verilog基础--sign表达式
  3. SAP CRM WebClient UI的cancel按钮处理
  4. python实例属性与类属性_Python 面向对象编程:类的创建与初始化、实例属性与方法、类属性与方法...
  5. linux启动有两个选择,RHEL5 用CentOS源升级,GRUB出现CentOS,RHEL两个启动项,选择哪一个?...
  6. WCF(一) ---- 简单调用
  7. 【干货】如何打造一流创业团队-创业者最实用的管理指南.pdf(附下载链接)...
  8. Android Studio 创建不同分辨率的图标
  9. Android学习JNI,使用C调用JAVA语言
  10. AppCode开发,一个智能开发环境
  11. 创新案例分享 | 一体化政务服务平台运维项目,全力提升平台服务效能
  12. 加拿大布兰登大学计算机专业,名校大揭底:布兰登大学到底怎么样?
  13. mysql中的查找算法_7种查找算法解析
  14. 儿子考上清华大学计算机系视频,儿子考上清华大学,家长忙发朋友圈,但收到的却不是祝福是心寒...
  15. boos直聘显示服务器繁忙,BOSS 直聘回应服务“崩了”:系统升级已完成,可正常使用...
  16. PCIe扫盲——TLP Header详解(一)
  17. HOU211学习总结
  18. C++语言程序设计第五版 - 郑莉(第九章课后习题)
  19. 字节跳动后端实习面经,一面+二面+三面(已收到offer)
  20. —— 约瑟夫环(自杀环)的数学解法

热门文章

  1. 联想7400打印机如何与手机连到一起_联想打印机力度空前的眼红优惠来袭 这波福利可不能再错过了...
  2. 【tomcat启动报错】To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
  3. tree树形控件之循环遍历
  4. Android中的文件读写操作
  5. 低代码如何助力石油行业数字化?
  6. HTML5 解决audio标签不能在iPhone上自动播放的问题
  7. 悬浮鼠标实现下拉菜单
  8. Springboot发送Email
  9. syslog-ng 和syslog-ng tls 服务端配置
  10. 「女程序员」JAVA面试经验(3年左右工作经验)