3~4矩阵的压缩存储(下)【详解】 数组是由n个相同类型的数据元索构成的有限序列;每个数据元素称为一个数组元索;每个元素在n个线性关系中的序号称为该元素的下标,下标的取值范围称为数组的维界;下标从0开始计数。指为多个值相同的元素只分配一个存储空间对零元素不分配存储空间。目的是为了节省存储空间。
队列(数据结构)【详解】 队列是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除,向队列中插入元素称为入队或进队;删除元素称为出队或离队。队列的特点先进先出队头(Front):允许删除的一端,又称队首;队尾(Rear):允许插入的一端;空队列:不含任何元素的空表双端队列是指允许两端都可以进行入队和出队操作的队列;逻辑结构仍是线性结构;将队列的两端分别称为前端和后端,两端都可以入队和出队。
输入输出一行字符串(应声虫) getchar()接受的是字符型,字符又对应着ASCII码值,ASCII码值都为正数,getchar()的结束标志是——EOF(end of file),本质上是-1,,所以EFO会使getchar()停止使用,我们由此知道,getchar()返回值为整型。getchar()函数可以从控制台获取一个一个的字符,然后将字符存放在字符数组中,最后打印出来,它可以读取空格、回车等。gets()函数只能用于字符串的输入,且它无法检查数组是否能装得下输入的字符串,因此若输入的字符串过长,会导致缓冲区溢出。
串和数组的定义和存储结构 Index(S,T,pos) //子串的位置。StrCopy(&T,S) //串拷贝。Replace(&S,T,V) //串替换。StrInsert(&S,pos,T) //子串插入。StrDelete(&S,pos,len) //子串删除。SubString(&Sub,S,pos,len) //求子串。(Brute-Force,又称古典的、经典的、朴素的、穷举的)
队列、循环队列操作及其链队列操作 队列是仅在表尾进行插入操作,在表头进行删除操作的线性表。表尾即an端,称为队尾;表头即a1端,称为队头。它是一种先进先出(FIFO)的线性表。插入元素称为入队;删除元素称为出队。队列的存储结构为链队或顺序队(常用循环顺序队)定义只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表(头删尾插)逻辑结构与线性表相同,仍为一对一关系。存储结构顺序队或链队,以循环顺序队列更常见。运算规则只能在队首和队尾运算,且访问结点时依照先进先出(FIFO)的原则。实现方式关键是掌握入队和出队操作,具体实现依顺序队或链队
线性表的合并以及有序表的合并 已知线性表La和Lb中的数据元素按值非递减有序排列,现要求将La和Lb归并为一个新的线性表Lc,且Lc中的数据元素仍按值非递减有序排列。依次从La或Lb中“摘取”元素值较小的结点插入到Lc表的最后,直至其中一个表变空为止;假设利用两个线性表La和Lb分别表示两个集合A和B,现要求一个新的集合A=A∪B。继续将La或Lb其中一个表的剩余结点插入在Lc表的最后。
总结:各种链表间的比较、顺序表和链表的比较 一般的,存储密度越大,存储空间的利用率就越高。显然,顺序表的存储密度为1(100%),而链表的存储密度小于1.对任一结点的操作都要从头指针依指针链查找到该结点,这增加了算法的复杂度。当每个结点的数据域所占字节不多时,指针域所占存储空间比重显得很大。②很少进行插入或删除操作,经常按元素位置序号访问数据元素。存储密度=结点数据本身占用的空间/结点占用的空间总量。数据元素的逻辑次序靠结点的指针来指示。通过p->next可以找到其前驱。通过p->next可以找到其前驱。从L->next依次向后遍历。
链表的特点,单链表的定义、存储结构,单链表的基本操作(判断链表是否为空、销毁链表、清空链表、求链表表长、查找、插入、删除,建立单链表) 单链表是由表头唯一确定,因此单链表可以用头指针的名字来命名,若头指针名是L,则把链表称为表L。
线性表的顺序表示和实现 /函数结果状态代码TURE 1FALSE 0OK 1ERROR 0//Status是函数的类型,其值是函数结果状态代码顺序表基本操作的实现——补充:几个简单操作线性表L的初始化(参数用引用)Status InitList_Sq(SqList &L){ //构造一个空的顺序表L//为顺序表分配空间if(!//存储分配失败//空表长度为0return OK;销毁线性表L//释放存储空间}清空线性表L//将线性表的长度置为0}求线性表L的长度}
线性表的定义和特点 线性表是具有相同特性的数据元素的一个有限序列。同一线性表中的元素必定具有相同特性,数据元素间的关系是线性关系。抽象数据类型线性表的定义如下:ADT List{数据对象:D={a(i)|a(i)属于Elemset,(i=1,2,...,n,n>=0)}数据关系:R={|a(i-1),a(i)属于D,(i=2,3,...,n)}基本操作:......等等}ADT List。
算法和算法分析 算法是对特定问题求解方法和步骤的一种描述,它是指令的有限序列。其中每个指令表示一个或多个操作。简而言之,算法就是解决问题的方法和步骤。二、算法的描述自然语言:英语、中文;流程图:传统流程图、NS流程图;伪代码(类语言):类C语言;程序代码:C语言程序;JAVA语言程序。三、算法与程序算法:输入转换为输出,一个问题可有多种算法。程序是由某种程序设计语言对算法的具体实现。算法的特性:有穷性、确定性、可行性、输入(0个或多个)、输出(1个或多个)
数据结构基本概念和术语 数据对象是性质相同的数据元素的集合,是数据的一个子集。数据对象、数据关系的定义用伪代码描述。可进行算术运算的,包括加减乘除、平方、开方等算术运算。不考虑计算机内的具体存储结构与运算的具体实现算法。数据对象:数据关系:基本操作:P是对D的基本操作集。初始条件:操作结果:数据项:构成数据元素的不可分割的最小单位。数据类型=值的集合+值的集合上的一组操作。数据元素与数据的关系:是集合的个体;数据对象与数据的关系:集合的子集。
数据结构绪论 3.数据项(Data Item)是组成数据元素的、有独立含义的、不可分割的最小单位。数据(Data)是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称(集合)。(给出问题的数学模型)而数据结构就是数据的组织、管理和存储格式,其使用目的是为了高效的访问和修改数据。数据结构是一门研究非数值计算的程序设计问题中,计算机的操作对象以及它们之间的关系和操作的学科。程序设计的实质是对确定的问题选择一种好的数据结构,并设计一种好的算法。数据类型:一个值的集合以及定义在这个值集上的一组操作的总称。
python——字典 字典以键值对的方式存储数据,字典是一个无序的序列。 字典是python内置的数据结构之一,与列表一样是一个可变序列。 字典和列表不同的是字典是无序序列。先放进去的元素,不一定放在前面,python中的字典是根据key查找value所在的位置。 不可变序列与可变序列的不同的是不可变序列是没有增、删、改操作的。例如:整数序列和字符串。 info={"name":"吴彦祖”,"age":18}print(info["name"])print(info["age"])#print(info["gender