链表--insert
分别是使用了二级指针和一级指针的两种方法,最后会按插入的顺序依次打印1,2,3,4
主要区别在于,使用二级指针,可以在main函数里直接用一个空的Node指针,而一级指针是在main函数里面先添加了一个空的头结点
因为二级指针是传的指针的指针,所以main函数里直接用Node *head = NULL后 , 传&head是没有问题的,因为传的是head的指针的指针,所以在Insert函数里会修改指针的地址。
而一级指针就不行,如果传进去head的指针之后,最终传回来的还是一开始的结果为NULL的指针地址,相当于是以前常看到的,创建一个函数来交换两个变量,可以通过传指针来修改指针所指向的变量。而我们传的head的指针,相当于这个变量,在函数里无论怎么修改这个指针,最终之前传进去的指针并不会变。
也就是说,如果你要在函数里(比如下面insert函数)改变指针的地址,那就传指针的指针来修改指针的地址。
使用二级指针---insert
#include <iostream>
using namespace std;
class Node {
public:
int data;
Node* next;
};
void Insert(Node** h, int new_data)
{
cout << h << endl;
cout << *h << endl;
Node* newnode = new Node();
Node* last = *h;
newnode->data = new_data;
newnode->next = NULL;
if (*h == NULL)
{
*h = newnode;
return;
}
while (last->next != NULL)
{
cout << last << endl;
last = last->next;
cout << last << endl;
}
last->next = newnode;
cout << last << endl;
cout << h << endl;
cout << *h << endl;
cout << last->next << endl;
return;
}
void print(Node* h)
{
if (h == NULL)
{
return;
}
while (h != NULL)
{
cout << h->data <<" ";
h = h->next;
}
return;
}
int main()
{
Node* head = NULL;
Insert(&head, 1);
Insert(&head, 2);
Insert(&head, 3);
Insert(&head, 4);
print(head);
return 0;
}
使用一级指针--insert
#include <iostream>
using namespace std;
class Node {
public:
int data;
Node* next;
};
void insert(Node* h, int new_data)
{
Node* newnode = new Node();
newnode->data = new_data;
newnode->next = NULL;
Node* last = h;
while (last->next != NULL)
{
last = last->next;
}
last->next = newnode;
}
void print(Node* h)
{
if (h == NULL)
{
return;
}
while (h != NULL)
{
cout << h->data <<" ";
h = h->next;
}
return;
}
int main()
{
Node* head = new Node();
head->data = 1;
insert(head, 2);
insert(head, 3);
insert(head, 4);
print(head);
return 0;
}
链表--insert的更多相关文章
- PHP模拟链表操作
PHP模拟链表操作 一.总结 1.类成员用的是-> 2.对象节点相连的话,因为是对象,所以不用取地址符号 3.数组传递参数的时候传引用的方法 ,& 二.PHP模拟链表操作 代码一: /* ...
- MySQL · 引擎特性 · InnoDB 事务系统
前言 关系型数据库的事务机制因其有原子性,一致性等优秀特性深受开发者喜爱,类似的思想已经被应用到很多其他系统上,例如文件系统等.本文主要介绍InnoDB事务子系统,主要包括,事务的启动,事务的提交,事 ...
- 带你深入理解STL之List容器
上一篇博客中介绍的vector和数组类似,它拥有一段连续的内存空间,并且起始地址不变,很好的支持了随机存取,但由于是连续空间,所以在中间进行插入.删除等操作时都造成了内存块的拷贝和移动,另外在内存空间 ...
- PHP常用算法和数据结构示例
<?php header("content-type:text/html;charset=utf-8"); $arr=array(3,5,8,4,9,6,1,7,2); ec ...
- php常用算法和数据结构
</pre><pre name="code" class="php"><?php /** * Created by PhpStor ...
- nodejs 搭建自己的简易缓存cache管理模块
http://www.infoq.com/cn/articles/built-cache-management-module-in-nodejs/ 为什么要搭建自己的缓存管理模块? 这个问题其实也是在 ...
- 二、SQL的生命周期
MySQL的sql语句由客户端发出,经过连接和权限验证后,最终达到服务器端,由服务器分配thread线程处理,之后就是要介绍的具体服务器端的thread线程是怎么处理每条sql语句的.[ 了解thre ...
- 【Leetcode】【Medium】Reorder List
Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must do thi ...
- (C++ STL)list的实现
#include <iostream> using namespace std; //採用迭代器和空间配置器所实现的双向链表的基本功能 template<class _Ty,clas ...
- php实现简单算法2
php实现简单算法2 去弄php手册,里面有数据结构,有数据结构就好办了,我的算法基础那么好. 而且的话有数据结构的话再配合我脑中的那些算法了,我就都ok啦. 在手册里面搜索php数据结构就好 路径如 ...
随机推荐
- [转帖]Shell编程之免交互
目录 交互的概念与Linux中的运用 Here Document 免交互 tee命令重定向输出加标准输出 支持变量替换 多行注释 Expect 实例操作 免交互预设值修改用户密码 创建用户并设置密码 ...
- [转帖]Docker资源(CPU/内存/磁盘IO/GPU)限制与分配指南
https://zhuanlan.zhihu.com/p/417472115 什么是cgroup? cgroups其名称源自控制组群(control groups)的简写,是Linux内核的一个功能, ...
- 华城金锐申威SW64服务器重装过程
华城金锐申威SW64服务器重装过程 背景 这边为了进行兼容性验证新进了两套申威的服务器. 一台机器带着安装好的操作系统了. 但是另外一套没有对应的系统. 端午期间想着趁着上班的人少, 加吧给处理一下. ...
- 【转帖】26.Java本地方法的理解(native方法)
目录 1.什么是本地方法? 2. 为什么要使用Native method? 1.什么是本地方法? 本地方法就是java代码里面写的native方法,它没有方法体.是为了调用C/C++代码而写的.在JN ...
- [转帖]五类IP的范围
五类IP的范围 IP地址分为A,B,C,D,E五类. 网络号:用于识别主机所在的网络: 主机号:用于识别该网络中的主机. 其中A类分配给政府机关使用,B类地址给大中型企业使用,C类地址给个人使用.这 ...
- [转帖]Oracle 通过 Exadata 云基础设施 X9M 提供卓越的数据库性能和规模
https://www.modb.pro/db/397202 32个节点的RAC 服务器 每个服务器 两个 64核心的AMD CPU 四个线程干管理 252个线程进行数据库处理 252*32=8064 ...
- 将自签名创建的ca证书 添加到linux的授信证书列表的办法
第一步: 将ca 证书 从cert 格式转换成pem格式 openssl x509 -in ca.crt -out ca.pem -outform PE 第二步: 将ca 证书导入至系统中来 cat ...
- CS231N Assignment3 笔记(更新中)
在这项作业中,将实现语言网络,并将其应用于 COCO 数据集上的图像标题.然后将训练生成对抗网络,生成与训练数据集相似的图像.最后,您将学习自我监督学习,自动学习无标签数据集的视觉表示.本作业的目标如 ...
- js-正则表达式边界符和前瞻、后顾的使用-保证你看明白
创建正则表达式第两种方式 1==>通过new字符的方式,来创建正则表达式 2==>通过创建字面量的方式去创建 1.new字符的方式 let regexp=new RegExp(/123/) ...
- 【解决一个小问题】golang 的 `-race`选项导致 unsafe代码 panic
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 为了提升性能,使用 unsafe 代码来重构了凯撒加密的代 ...