树和集合
table th:nth-of-type(1){
width: 13%;
}
table th:nth-of-type(2){
width: 13%;
;
}
table th:nth-of-type(3){
width: 13%;
}
table th:nth-of-type(4){
width: 13%;
}
table th:nth-of-type(5){
width: 10%;
}
table th:nth-of-type(6){
width: 10%;
}
table th:nth-of-type(7){
width: 10%;
}
table th:nth-of-type(8){
width: 10%;
}
什么是树
客观世界中许多事物存在层次结构
人类社会家谱
社会组织结构
图书信息管理
分层次组织在管理上具有更高的效率
树的定义
树(Tree):n(n>=0)个结点构成的有限集合
当n=0时,称为空树
对于任一棵非空树(n>0),它具备以下性质:
树中有一个称为“根(Root)”的特殊结点,用r表示
其余结点可分为m(m>0)个互不相交 ...
串与串的模式匹配
table th:nth-of-type(1){
width: 12%;
}
table th:nth-of-type(2){
width: 8%;
;
}
table th:nth-of-type(3){
width: 8%;
}
table th:nth-of-type(4){
width: 8%;
}
table th:nth-of-type(5){
width: 8%;
}
table th:nth-of-type(6){
width: 8%;
}
table th:nth-of-type(7){
width: 8%;
}
table th:nth-of-type(8){
width: 8%;
}
table th:nth-of-type(9){
width: 8%;
}
table th:nth-of-type(10){
width: 8%;
}
table th:nth-of-type(11){
width: 8%;
}
什么是串
线性存储的一组数据(默认是字符)
是线性表的一种特殊的应用,指的就是线性存储的一组数据
特殊操作集
求串的长度
比较两串是否相等
两串 ...
队列
队列
“队列(Queue)”:具有一定操作约束的线性表
插入和删除操作:只能在一端插入(队头),在另一端删除(队尾)
数据插入:入队列(AddQ)
数据删除:出队列(DeleteQ)
先来先服务、先进先出:FIFO
现实中最能体现堆栈结构的实例:排队
后来的人只能排在队尾,先来的人先离队
队列的抽象数据类型描述
类型名称:队列(Queue)
数据对象集:一个有0个或多个元素的有穷线性表
操作集:长度为MaxSize的队列Q ∈ Queue,队列元素item ∈ ElementType
Queue CreateQueue(int MaxSize):生成长度为MaxSize的空队列;
int IsFull(Queue Q,int MaxSize):判断队列Q是否已满;
void AddQ(Queue Q,ElementType item):将数据元素item插入Q中;
int IsEmpty(Queue Q):判断队列Q是否为空;
ElementType DeleteQ(Queue Q):将队头数据元素从队列中删除并返回。
队列的顺序存储实现
队列的顺序存储结构通常由一个一 ...
继续
有些事情,你只要知道就可以了,这个更简单。
有些事情,你不仅要知道,还要知道为什么?更重要的是,有时还要知道我们该怎么办?这个可就不简单了。
从表达式的求值到堆栈
计算机如何进行表达式求值?
例:算术表达式:5+6/2−3∗45+6/2-3*45+6/2−3∗4
运算时有优先次序,使得运算符后跟着的操作数并不一定参与这个运算
算术表达式
算术表达式由两类对象构成:
运算数,如:2、3、4
运算符号,如:+,−,∗,/+,-,*,/+,−,∗,/
不同运算符号优先级不同
后缀表达式
中缀表达式:运算符号位于两个运算数之间,如:a+b*c-d/e
后缀表达式:运算符号位于两个运算数之后,如:abc*+de/-
例:666 222 / 333 −4- 4−4 2∗+=?2 *+=?2∗+=?
求值策略和方法
后缀表达式求值策略:从左向右“扫描”,逐个处理运算数和运算符号
遇到运算数时怎么办?如何“记住”目前还不参与运算的数?
当碰到运算数时,存储当前的运算数
遇到运算符号怎么办?对应的运算数是什么?
根据运算符(一元、二元、三元)所需的运算数将最近记住的几个运算数拿来运算
中追表达式求值策略:将中缀表达式转换为后缀表达式,再求值
如何将中缀表达式转换为后缀表达式?
例:2 + 9 / 3−52\space+\spac ...
Ethereum入门了解
本文参考Microsoft使用 Solidity 编写 Ethereum 智能合同。
用于处理智能合同的工具
许多工具都可帮助快速高效地开发智能合同。以下各节介绍了一些集成开发环境 (IDE)、扩展和框架。
IDE
Visual Studio Code:此代码编辑器已经过重新定义和优化,专门用于生成和调试现代Web和云应用程序。
Remix:一种基于浏览器的编译器和IDE,可以通过它来使用Solidity生成Ethereum合同,使用它来编写、测试和部署自己的合同,并调试交易。
扩展
Ethereum的区块链开发工具包:此扩展可以简化在Ethereum账本上创建、生成和部署智能合同的方式。
框架
Truffle 套件:在将Ethereum合同部署到公共账本并产生实际成本之前,使用Truffle工具套件对其进行测试。开发人员可在本地进行开发以便于其工作。
该工具套件包括Truffle、Ganache和Drizzle。
OpenZeppelin:使用OpenZeppelin工具编写、部署和操作去中心化应用程序。
OpenZeppelin提供了两个产品:合同库和S ...
Solidity入门了解
本文参考Microsoft了解如何使用Solidity。
简介
使用一种称为Solidity的编程语言可以编写供应链、在线市场或其他用例的操作代码。
通过使用Solidity,还可以指定用户操作。通过对网络上允许的这些操作进行编程,你可以创建自己的区块链网络,而这些网络对所有参与者都是安全且透明的。
什么是Solidity
Solidity是一种面向对象的用于编写智能合同的语言。
智能合同是存储在区块链中的程序,它们指定有关数字资产传输的规则和行为。可以使用Solidity为Ethereum区块链平台对智能合同进行编程。
智能合同包含状态和可编程逻辑,通过事务执行函数,因此使用智能合同可以创建业务工作流。
概述
Solidity是Ethereum区块链最常用的编程语言。
Solidity是一种基于其他编程语言(包括 C++、Python和JavaScript)的高级语言,如果你熟悉这些语言中的任何一种,则有助于熟悉Solidity代码。
Solidity是静态类型语言,这意味着类型检查在编译时进行,而不像动态类型语言在运行时进行。
Solidity支持继承,这意味着一个合同中存 ...
线性表概念和实现
table th:nth-of-type(1){
width: 10%;
}
table th:nth-of-type(2){
width: 10%;
;
}
table th:nth-of-type(3){
width: 10%;
}
table th:nth-of-type(4){
width: 10%;
}
table th:nth-of-type(5){
width: 10%;
}
table th:nth-of-type(6){
width: 10%;
}
table th:nth-of-type(7){
width: 10%;
}
table th:nth-of-type(8){
width: 10%;
}
table th:nth-of-type(9){
width: 10%;
}
table th:nth-of-type(10){
width: 10%;
}
线性表
“线性表(Linear List)”:由同类型数据元素构成有序序列的线性结构
表中元素个数称为线性表的长度
线性表没有元素时,称为空表
表起始位置称表头,表结束位置称表尾
线性表的抽象数据类型 ...
多项式的表示和运算
table th:nth-of-type(1){
width: 10%;
}
table th:nth-of-type(2){
width: 10%;
;
}
table th:nth-of-type(3){
width: 10%;
}
table th:nth-of-type(4){
width: 10%;
}
table th:nth-of-type(5){
width: 10%;
}
table th:nth-of-type(6){
width: 10%;
}
table th:nth-of-type(7){
width: 10%;
}
多项式的表示
例:一元多项式:f(x)=a0+a1x+…+an−1xn−1+anxnf(x)=a_0+a_1x+…+a_{n-1}x^{n-1}+a_nx^nf(x)=a0+a1x+…+an−1xn−1+anxn
主要运算:多项式相加、相减、相乘等
如何表示多项式?
多项式的关键数据:
多项式项数n
各项系数ai及指数i
多项式问题的启示:
解决同一个问题可以有不同的表示(存储)方法
有一类共性问题:有序线性序列的组织和管 ...
1.测试运行时间、最大子列和计算
// 测试运行时间
#include<iostream>
#include<cstdio>
#include<ctime>
#include<cmath>
usingnamespacestd;
voidprintN1(intn);
voidprintN2(intn);
floatff1(floatx);
floatff2(floatx);
floatcost(floatt,floatf(float));
intmain()
{
constfloatx=1.1;
cout<<"ff1"<<"运行结果:"<<ff1(x)<<" 运行时间:"<<cost(x,ff1)<<'s'<<endl;
cout<<"ff2"<<"运行结果:"<<ff2(x ...