嵌入式自学第十九天

数据结构:相互之间存在一种或多种相互关系的数据元素的集合。

逻辑结构:

集合:所以数据在同一个集合,关系平等。如数组所有元素在一个集合。

线性:数据和数据间是一对一的关系。例如数组元素的有序性,中间元素前后都有唯一一个元素。

树:一对多。如目录结构。

图:多对多。如地图路线。

物理结构:(在内存中的存储关系)

顺序存储:数据存储在连续的存储单位中。逻辑关系物理关系一致。数组连续性。

链式:数据存放的存储单位是随机的或任意的,可以连续也可以不连续。

Struct Per //数据元素:抽象存在的元素集合

char name;//数据项:实际存在的元素

Int age;

}

Struct per s;实际存在的元素集合。

数据的类型,ADT abstruct datatype

是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。

原子类型:int,char,float

结构类型:union,struct

抽象数据类型:数据模型+操作

程序:数据 + 算法

算法:

解决特定问题求解步骤的描述,计算机中表现为指令的有限序列,每条指令表示一个或多个操作。

算法特征:

*输入可选,输出必须。只要某处发生变化,就算输出。

*有穷性,执行步骤会自动结束,不能是死循环,并且每一步是在可接受时间内完成。

*确定性:同一个输入只有唯一的输出。

*可行性:每步都是可实现的。

算法的设计

  1. 正确性:语法正确,合法输入结果合理;非法输入给出说明;对精心选择、刁难测试都能正常运行,结果正确。
  2. 可读性:便于交流、阅读、理解。
  3. 健壮性:输入非法数据,能进行相应的处理,而不是产生异常。
  4. 高效:存储低、效率高。

事后统计法,事前分析法。

算法时间复杂度:

执行这个算法所花时间的度量。

推导时间复杂度:

  1. 用常数1取代运行时间中的所有加法常数。
  2. 修改后的运行函数中,只保留最高阶项。
  3. 如果高阶存在且不是1,则取除这个项相乘的常数。

复杂度:O(1)<O(logn)<O(N)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)

算法目前最快也达不到O(1)。

for(i=0;i<n;i++)
{
i=5*i;
}

这个算法复杂度为O(logn)。

线性表:

零个或多个数据元素的有限序列;

元素间有顺序。如果存在多个元素,首元素无前驱,尾元素无后继,其他元素都有前驱后继。

Head:头指针;Tlen:总长度;clen:当前长度。

线性表常规操作 ADT

顺序表(Seqlist)

增删改查:

线性表的常规操作  ADT
typedef struct person {
char name[32];
char sex;
int age;
int score;
}DATATYPE;
typedef int Datatype;
typedef struct list {
DATATYPE *head;
int tlen;
int clen;
}SeqList;

SeqList *CreateSeqList(int len); //创建顺序链表
int DestroySeqList(SeqList *list); //销毁链表
int ShowSeqList(SeqList *list); //遍历输出链表
int InsertTailSeqList(SeqList *list, DATATYPE data); //尾部元素赋值
int IsFullSeqList(SeqList *list);  //链表是否满了
int IsEmptySeqList(SeqList *list); //链表是否空的
int InsertPosSeqList(SeqList *list, DATATYPE data, int pos); //指定位置插入元素
int FindSeqList(SeqList *list, char *name); //查找元素
int ModifySeqList(SeqList *list, char *old, DATATYPE new); //修改成员值
int DeleteSeqList(SeqList *list, char *name); //删除成员
int ClearSeqList(SeqList *list); //元素清空

补充:vs code软件下载

运行:命令输入code

如果没联网:找到虚拟机设置->网络适配器->NAT,设备状态都勾上。

ifconfig命令,第一块ens 名字记住

输入命令sudo vi /etc/network/interfaces

这两行不能被注释

系统级配置完了后需要重启生效:sudo reboot。或者电源键restart。

文件夹解压 unzip 文件名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值