自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 二叉树的顺序存储—C++实现

二叉树的顺序存储—C++实现二叉树的顺序存储依靠数组实现,最重要的是前序、中序、后序、层序四种遍历方式及获取深度、求所有结点、叶子结点的操作,总体不难。头文件如下:#pragma once#include<iostream>#include<queue>using namespace std;#define Maxsize 100class BinaryTree{public: BinaryTree(); ~BinaryTree(); void CreatT

2021-04-12 21:29:12 3170 4

原创 Leetcode1—两数之和C++实现

Leetcode1—两数之和C++实现题目:给定一个数组,和一个目标值target,遍历数组中的元素,找到两个元素之和恰好等于target,返回两个元素的下标。输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。解题思路:设置两个空vector,一个将原数组中的元素全部拷贝过来,进行遍历查找,其中采用双指针的方法:指针i指向首元素,指针j指向尾元素,找到两个元素和等于target之后,

2021-04-03 19:30:17 278

原创 快速排序—C++实现

快速排序—C++实现快速排序虽然看着不难、理解起来也很简单,但是值得注意的点还是有很多,一不小心就踩坑!首先:快排的思想是:选定一个基准为,采用双指针的方法,左指针找比基准位小的数,右指针找比基准位大的数,进行交换,最后的结果就是,基准位左边的都是比它小的数,基准位右边都是比它大的数,再分别对这两个区间进行递归排序!双指针的顺序要注意退出递归的条件不能少循环嵌套循环具体实现:#include<iostream>using namespace std;void QuickSor

2021-04-03 18:49:47 1584 1

原创 字符串的顺序存储—C++实现

字符串的顺序存储—C++实现字符串的实现先对于之前的线性表难度有很大提高,但顺序存储的容器依然是数组。必须有两个内置的变量:一个存储字符串的数组 、一个显示数组长度的变量顺序存储的操作如下:对数组初始化,为其赋值遍历输出数组元素获取数组的长度从数组中元素i开始,删除长度为j的子串(i为子串的首元素),返回剩下的字符串将一个字符串中的所有元素拷贝到另一个字符串数组中判断两个字符串是否相等链接两个字符串获取数组中第i个元素开始,长度为j的子串在字符串第i个位置,插入一个子串,返回插入子串

2021-04-02 15:08:54 2189

原创 队列的链式存储—C++实现

队列的链式存储—C++实现队列的链式存储也类似于单链表,只不过要求:只能从队尾添加结点、队头删除结点。注意删除结点时要考虑只有一个结点与多个结点的情况!头文件如下:#pragma once#include<iostream>using namespace std;class QueueNode {public: int data;//数据域 QueueNode* next;//指针域,指向队列中下一个结点};class QueueList{public: Queue

2021-03-31 20:56:40 219

原创 队列的顺序存储—C++实现

队列的顺序存储—C++实现队列是一种先进先出的数据结构,特点在于:只能从队列的一端插入元素(队尾);从队列的另一端删除元素(队头),要记住两个公式:①判断队列是否已满:(rear+1)%Maxsize==front?若等于==>队列已满;②获取队列的长度:(rear-front+Maxsize)%Maxsize其中rear指向队尾元素,front指向队头元素队列的顺序存储包括以下操作:入队、出队、遍历输出、获取长度等头文件如下:#pragma once#include<iostrea

2021-03-31 15:56:49 307

原创 栈的链式存储—C++实现

栈的链式存储—C++实现栈的链式存储类似于单链表的链式存储,头指针就相当于指向栈顶结点的指针。相当于只能操作单链表的头部,操作有:入栈、出栈、判断是否为空、获取栈顶结点的数据。头文件如下:#include<iostream>using namespace std;class StackNode {public: int data; StackNode* next;//指向下一个结点的指针};class LinkStack {public: LinkStack();

2021-03-30 21:59:53 514

原创 栈的顺序存储C++实现

栈的顺序存储C++实现栈的顺序存储类似于数组,栈是一种先进后出的数据结构,只允许对栈顶元素进行操作,不允许有遍历的行为,常见操作有入栈、出栈、获取栈顶元素、获取栈的大小等头文件如下:#pragma once#include<iostream>using namespace std;class Stack {public: Stack(int size); ~Stack(); int Push(int data);//入栈 int Pop(int* x);//出栈 int

2021-03-30 20:36:39 369 1

原创 剑指offer22—链表中倒数第k个节点

剑指offer22—链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点思路:本题可利用双指针的思想,先让两个指针p、q均指向第一个结点,接着让p先走到链表中k的位置,那么p与q的距离为k,接着让两个指针同时向前走,当p走到null的时候,q恰好处于倒数第k个位置头文件如下:#prag

2021-03-25 21:57:37 46

原创 剑指offer24(反转链表)

leetcode题解:剑指offer24(反转链表)定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路:反转字符串的本质就是原链表的箭头反转,从尾结点开始向头结点遍历输出,将原链表中的箭头反转。因此需要三个指针,一个指向当前结点、一个指向当前结点的前一结点、一个指向当前结点的后一结点。头文件如下:#pragma

2021-03-25 20:34:21 88

原创 线性表的链式存储(二)

线性表的链式存储(二)这篇主要实现线性表最主要的功能:插入和删除元素,包括:①根据下标索引m,找到线性表中指向该节点的指针②头插、尾插、指定位置插入③头删、尾删、指定位置删除④清空线性表头文件如下:#pragma once#include<iostream>using namespace std;class Node {public: int data; Node* next;};class LinkList {public: LinkList();//构造

2021-03-25 15:30:03 55

原创 线性表的链式存储(一)

线性表的链式存储(一)线性表的链式存储简称链表,相较于顺序存储,在添加、删除元素时能够提供很大的便利,这部分介绍如何用C++实现单链表的①构造、析构函数 ②创建单链表 ③判断是否为空 ④计算单链表的长度 ⑤遍历单链表,设置单链表中有5个结点(可修改)头文件如下:#pragma once#include<iostream>using namespace std;class Node {public: int data; Node* next;};class LinkList

2021-03-24 21:59:30 77

原创 线性表的顺序存储——C++实现

线性表的顺序存储——C++实现线性表的顺序存储结构通过数组来实现可以有多个函数,重点是增、删、查、改,具体可分为以下几个部分:①构造、析构函数 ②判断是否为空、清空数组、遍历数组③在指定位置插入元素④删除指定位置的元素⑤修改指定位置的元素⑥查找指定下标元素、查找指定元素返回该元素的下标、查找指定元素的前驱和后继元素⑦倒置数组⑧对数组进行排序头文件如下:typedef int Elem;//这里就是方便随时对类型进行更改,提高代码复用性class List {public: List(

2021-03-23 21:59:46 601

原创 被称为区块链3.0的DAG到底是什么?

被称为区块链3.0的DAG到底是什么?  如若用一句话来形容区块链的弊端,那就是无法在保证安全性和高度去中心化的前提下,大幅度提升可扩展性,导致无法大规模商用。为了提高可扩展性,出现了分片、跨链、闪电网络等手段,这些方法都没有改变区块链同步写入的单链数据结构。DAG(有向无环图)是计算机领域常用的一种数据结构,它取消了“block”这个概念,进而也没有了“矿工”、“挖矿”这些。将组成单元从“block”变成一笔一笔的“transaction”,如果用户想要发起一笔transaction,必须验证前面几笔交

2020-09-25 10:13:40 809

原创 如何在Ubuntu18.04安装最新版ipfs(0.6.0)

如何在Ubuntu18.04安装最新版ipfs(0.6.0)(1)解压缩包输入以下命令:cd go-ipfs/sudo ./install.shwhich ipfsipfs versionipfs help会出现版本和帮助手册此时ipfs已经安装完毕(2)创建ipfs节点输入ipfs init按提示输入 ipfs cat /上面那一大串,会出现接着输入ipfs id查看节点信息(3)修改监听端口进入root下,进入.ipfs目录下,找到config文件输入vi con

2020-09-22 11:44:49 446

原创 ubuntu18.04下安装go语言(go1.15.2版本)

在Ubuntu18.04下安装1.15.2版本go语言(1)解压缩包:进入管理员权限su后,执行下面三条语句(#后面的)(2)设置权限(elihsuu是用户名,换成自己的)(3)输入 vim ~/.bashrc更改环境变量,按i进入编辑状态,将下面三条语句加入到文件末尾export GOROOT=/usr/local/goexport GOPATH=/home/elihsuu/GOPATHexport PATH=$ GOPATH/bin: $GOROOT/bin: $PATH(这里 $之间都

2020-09-22 10:42:19 2098 1

原创 Elastico算法总结

Elastico算法创新点总结:①采用分片技术,将网络和交易分片,使得随着节点数目的增加,可实现近似线性的吞吐量,提高了交易量上限;同时避免了跨分片通信,降低通信复杂度。②巧妙的将POW、BFT算法结合(POW算法生成节点身份+BFT算法验证交易的有效性)提高共识效率。缺陷:①第三步委员会共识中,在每个委员会中采用PBFT算法对交易达成共识,但由于PBFT算法在节点数目过多时,性能较差通信复杂度较高。为解决这个问题,可以像之后提出的公有链Zilliqa采用多重签名算法优化PBFT算法,或者也可以采用

2020-09-15 17:41:41 1221

原创 Elastico算法详解(二)

②委员会设置  Elastico算法的一个精妙之处就在于,开始用POW算法验证身份,组成多个委员会,在委员会内部由于节点数量少,因此可以采用BFT算法对交易达成共识。当委员会建立成功后,委员会中的每一个节点都要与其他节点建立点对点连接,Elastico算法通过将最初通过身份验证进入系统的C个节点组成一个目录委员会,其他后进入的节点联系目录委员会,获取它的peer节点的信息并与之建立连接的方式,将通信复杂度从O(n^2)降到O(nc);具体步骤:  节点通过pow方式验证身份进入系统,检查当前系统中目录

2020-09-15 15:28:30 963

原创 区块链sharding论文Elastico研读

区块链扩容文献研读Elastico(一)一、背景介绍:采用pow共识算法的比特币吞吐量为7tps,就是说每秒能够处理的交易数为7笔,比当前visa每秒交易量少了3-4个数量级, 不满足当前对交易处理要求,因此为了在不增加网络延迟的情况下提高系统吞吐量,大多采用分片技术进行扩容。Elastico就是第一个在公有链提出采用分片技术的区块链协议,为后来将分片技术引入区块链提供了研究方向和思路。二、协议步骤①Identity Setup and Committee Formation第一步是身份验证和委员

2020-09-11 15:36:45 1002

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除