自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 顺序表的基本操作(2)(合并,划分)

一、合并1.1已知线性表La和Lb中的数据元素仍按非递减有序排列,将La和Lb归并为一个新的线性表,且Lc的数据元素仍按非递减有序排列。​ 这个问题可以有很多种方法解决,最简单的操作过程是:先分别La和Lb中的元素赋到Lc中,然后重新排序(低效)。比较高效的做法:为La和Lb设两个指示器i和j,分别指向当前最小的元素,开始是分别指向La和Lb的第一个元素。然后让i和j所指向的元素比较,小者先行置入Lc中,并且该指示器后移,继续i和j所指向的元素比较,知道一个表的元素全部置入Lc中,然后把另一个

2021-07-17 22:48:06 945 1

原创 顺序表的基本操作(查找,插入,删除)

一、查找按值查找:在顺序表中从头查找结点值等于给定值x的结点int Find_1(SqList L,ElemType x){ int i=1; ElemType *p; for(p=L.elem;p;p++)//p++将指针p进到L.elem[]的下一个元素位置 { if(*p!=x) i++; else break; } if(i<=L.length)

2021-07-15 22:02:55 1302

原创 举例说明空间复杂度和时间复杂度

空间复杂度例:将一维数组a中的n个数逆序存放在原数组中。【算法1】#include<stdio.h>void main(){ int a[10]={1,2,3,4,5,6,7,8,9,10}; int t,i,n=10; for(i=0;i<n/2;i++) { t=a[i]; a[i]=a[n-i-1]; a[n-i-1]=t; } for(i=0;i<n;i++) {

2021-04-17 18:19:26 355 1

原创 用递推法和递归法计算斐波那契(Fibonacci)数列的第n项

斐波那契数列递推法编写程序,用递推法计算斐波那契(Fibonacci)数列的第n项。求解思路:斐波那契(Fibonacci)数列为0,1,1,2,3,5,8,13,……,即:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2),当n>1时。用递推法编写的程序为:#include<stdio.h>int Fib(int n){ int f0=0,f1=1,f,i; if(n==0||n==1) { return n;

2021-04-15 17:10:48 15167

原创 C语言解决百钱买百鸡问题

百钱买百鸡穷举法举例求解“百钱买百鸡”问题:公鸡每只5钱,母鸡每只3钱,小鸡3只1钱。求解思路:设公鸡数为x,母鸡数为y,小鸡数为z,则可以得到下面的整数不定方程组:x+y+z==1005x+3y+z/3==100利用穷举法可以写出下面的算法程序:#include<stdio.h>void main(){ int x,y,z; for(x=0;x<=100;x++) { for(y=0;y<=100;y++)

2021-04-15 16:11:57 11640 6

原创 区块链学习笔记21——智能合约

二十一、智能合约智能合约是以太坊的精髓,也是以太坊和比特币一个最大的区别。什么是智能合约?智能合约的本质是运行在区块链上的一段代码,代码的逻辑定义了智能合约的内容智能合约的账户保存了合约当前的运行状态balance:当前余额nonce:交易次数code:合约代码storage:存储,数据结构是一颗MPTSolidity是智能合约最常用的语言,语法上与JavaScript很接近智能合约的代码结构Solidity是面向对象的变成语言,这里的contrac

2021-02-28 19:44:05 6849 7

原创 区块链学习笔记17——GHOST协议

十七、GHOST协议以太坊中的共识机制GHOST协议,以太坊把出块时间降到了十几秒,这对于提高系统的throughput(吞吐量)和降低反应时间来说,都是很有帮助的,跟比特币的10分钟的出块时间相比,以太坊的出块速度相当于提高到了40倍,但是这样大幅度降低出块时间之后也带来一些新的问题,前面讲过比特币和以太坊都是运行在应用层的共识协议,底层是一个P2P的Overlay Network,这个Overlay Network本身传输的时间是比较长的,因为他的拓扑协议做flooding的时候没有考虑实际的拓扑结构

2021-02-18 21:30:33 1059

原创 区块链学习笔记16——以太坊中的交易树和收据树

十六、以太坊中的交易树和收据树每次发布一个交易的时候,那些交易会组织成一个交易树,也是一颗Merkle tree跟比特币中的情况是类似的,同时以太坊还增加了一个收据树,每个交易执行完之后会形成一个收据,记录这个交易的相关信息,交易树和收据树上面的节点是一一对应的。增加这个收据树,主要是考虑到以太坊的智能合约执行过程比较复杂,所以通过增加收据树的结构有利于我们快速查询一些执行的结果,从数据结构上,交易树和收据树都是MPT,这个跟比特币中有所区别,比特币的交易树就是用普通的Merkle tree,区块里的所有

2021-02-17 19:35:39 1184 2

原创 区块链学习笔记15——以太坊中的状态树

十五、以太坊中的状态树以太坊采用基于账户的模式,系统中显式地维护每个账户上有多少余额,今天看一下用什么样的数据结构来实现account-based ledger。完成的功能:从账户地址到账户状态的映射,addr->state。addr:账户地址,以太坊中用的账户地址是160位,也就是20个字节,一般表示成40个十六进制的数。state:外部账户和合约账户的状态,包括余额,交易次数nonce,合约账户还包括代码和存储。数据结构几个方案直观的想法:用哈希表实现,系统中的全节点维护一个哈希表,

2021-02-16 20:43:06 1808

原创 区块链学习笔记14——以太坊的账户

十四、以太坊的账户基于交易的账本比特币中是用的基于交易的账本,这种模式下,系统中并没有显示的记录每个账户上有多少钱,要根据UTXO里的信息推算,包括想知道这个人一共总资产有多少个比特币,就算一下这个人的所有账户,就他有私钥的那些账户在UTXO里面一共有多少个币就可以了,好处是隐私保护比较好,你有多少钱,可能连你自己都说不清楚,那别人就更不清楚了。但是这样就带来一个问题,就他使用上比较别扭,跟我们的日常体验不太一样,像转帐的时候,A要转给B10BTC,A要说明这10个币的来源,其中七个币是前面这个交易中

2021-02-09 17:46:31 900

原创 区块链学习笔记1——密码学原理

一、密码学原理比特币被称为加密货币(crypto-currency)哈希函数(cryptographic hash function)重要性质collision resistance:哈希碰撞两个输入x,y,且x不等于y,哈希函数H,有H(x)=H(y),两个不同的输入算出的哈希值相等=>哈希碰撞哈希表里也有哈希碰撞,不同的输入会映射到哈希表的同一位置,哈希碰撞不可避免一般输入远远大于输出,比如256位哈希值,输出空间是2的256次方,但输入空间是无限大的,按照鸽笼原理必然会

2021-01-24 00:10:18 1052 2

空空如也

空空如也

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

TA关注的人

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