
数据结构
Twilight_yuxi-
这个作者很懒,什么都没留下…
展开
-
(C语言实现)静态查找表之有序表的查找
我们可以利用有序这个特点,设计一些高效的算法。例如:1.折半查找 2.斐波那契查找 3.插值查找1.折半查找实现思路顾名思义,折半查找就是在一个查找范围内以中间点为关键字,与给定值进行比较,从而寻找下一个查找范围。随着查找范围的不断缩小,结果越逼近给定值。书上的定义:先确定待查记录所在的范围,然后追捕缩小范围知道找到或者找不到该纪律为止。代码int Search_Bin(SSTable ST,int key){//折半查找。查找num在顺序表ST中的位置 //只适用于有序的顺序表 i原创 2020-08-02 00:00:13 · 575 阅读 · 0 评论 -
(C语言实现)静态查找表之顺序表的查找
实现思路:从表中的最后一个记录开始,逐个进行纪律的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功;反之,则查找失败。为了提高查找效率,我们可以设置一个监视哨。监视哨:所谓的监视哨就是将表中的第一个元素赋值为给定值(也可以将它设在高下标处),它的目的免去查找过程中每一步都要检测整个表是否检测完毕。但是只在ST.length>=1000时,进行一个查找所需的平均时间几乎减少一半。代码int Search_Seq(SSTable ST,int key){//key为所要查找原创 2020-08-01 23:35:40 · 1594 阅读 · 0 评论 -
静态查找表的定义及其四种实现方法
根据查找表的定义,我们可以知道静态查找表的功能就是查询(查询某个元素是否在表中,查询某个特定元素的各种属性)所以静态查找表的基本操作:1.Create(&ST,n);操作结果:构造一个含n个数据元素的静态查找表ST2.Destroy(&ST);初始条件:ST存在操作结果:销毁表ST3.Search(ST,key);初始条件:ST存在,key为和关键字类型相同的给定值操作结果:ST中是否存在其关键字等于key的数据元素,若是则返回该函数值,反之,则返回空。4.Travers原创 2020-08-01 21:58:33 · 2947 阅读 · 0 评论 -
查找的相关概念
查找表查找表是由同一类型的数据元素(或记录)构成的集合。由于“集合”中的数据元素之间存在着完全松散的关系,因此查找表是一种非常灵便的数据结构。查找表的基本操作其实还是增删查改…(1)查询某个“特定的”数据元素是否在查找表中(2)检索某个“特定的”数据元素的各种属性(3)在查找表中插入一个数据元素(4)从查找表中删去某个数据元素静态查找表:只有(1)、(2)操作动态查找表:在静态查找表的基础上加有(3)、(4)操作关键字关键字是数据元素中的某个数据项的值,用它可以标识一个数据元素。如原创 2020-07-18 18:59:18 · 240 阅读 · 0 评论 -
(C语言描述)栈的应用——数值转换(十进制转八进制)
解题思路十进制转八进制:整数部分,除8取余法,每次将整数部分除以8,余数为该位权上的数,商继续除以8,余数又为上一个位权上的数,然后以此类推一直下去,直到商为零例:1348转八进制:(1)x: 1348y=x%8=4此时 4 入栈栈中元素:4(2)x:1348/8=168y=x%8=0此时 0 入栈栈中元素:04(3)x: 168/8=21y=x%8=5此时5入栈栈中元素:504(4)x: 21/8=2y=x%8=2;此时2入栈栈中元素:2原创 2020-05-21 22:22:09 · 3296 阅读 · 0 评论 -
(C语言描述)什么是链栈?链栈的基本操作
栈一共有两种储存结构1.顺序栈2.链栈链栈链栈也是一种链表,它与一般链表的不同之处就在于仅仅只在表尾插入/输出。所以我们定义一个结点,结点包含value储存要保存的数值,指针next,指向一下个结点。定义一个链表,包含top指针,指向最后输入的那个元素;还需要指针bottom,始终指向栈底;还可设置一个变量len,用来储存栈内元素的个数,当然不设置也可以,写一个GetLength()也可。定义一个结点typedef struct SNode { ElemType value; struc原创 2020-05-21 21:15:20 · 1466 阅读 · 0 评论 -
(C语言实现)什么是顺序栈? 顺序栈的基本操作
栈一共有两种储存结构1.顺序栈2.链栈顺序栈顺序栈,即栈的顺序存储结构是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附指针top指示栈顶元素在顺序栈的位置。通常top=0表示空栈。用C语言描述是,因为不能确定整个过程中所需最大空间的大小,所以我们可以设一个初始容量,在栈的空间不够时在逐段扩大。定义一个顺序栈typedef struct Stack{ Elemtype data[Init_Stack_Size]; Elemtype len; Elemtype Stack原创 2020-05-20 17:45:10 · 1068 阅读 · 0 评论 -
什么是栈?什么是队列?栈与队列的特点
栈栈(Stack)是限定在仅在表尾插入的线性表。因此对于栈来说,表尾具有特殊的含义。我们把表尾称作栈顶(top),把表头称作栈底(bottom)。不含元素的栈称为空栈。想象一下进栈的顺序:1.a1进,进到栈底2.a2进,进到a1的下一个,栈顶指针指向a23.a3进,进到a2的下一个,栈顶指针指向a34.a4进,进到a3的下一个,栈顶指针指向a4想象一下出栈的顺序:1.a4第一个输出,栈顶指针指向a32.a3第二个输出,栈顶指针指向a23.a2第三个输出,栈顶指针指向a14.a1第四原创 2020-05-20 16:17:37 · 10507 阅读 · 1 评论 -
C语言 线性表实现一元多项式的表示及相加
解题思路1.储存系数与项数储存结构:若只进行求值操作,不改变多项式的系数或指数,那么用顺序结构更方便些。否则,用链式结构效率更高。我们采取连式结构。储存多项式信息:从上图可以看出,一个多项式中的一项有系数、指数两项。所以在设计结点时,应有三个域:系数、指数、next2.要实现的操作1.两个多项式相加在进行操作之前,我们可以先建一个新的链表(“和多项式”链表),用来保存相加的结果。(1)指针qa所指结点的指数 == 指针qb所指结点的指数将两个结点中的系数相加,若和不为0,则修改qa所指结点的原创 2020-05-16 22:18:09 · 5693 阅读 · 4 评论 -
线性表两种存储结构的不同特点及其使用场合
线性表的两种存储结构1.顺序结构(1)结点中只有自身的信息域,没有关联信息域。因此,顺序存储结构的存储密度大度、存储空间利用率高。(2)通过计算地址直接访问任何数据元素,即可以随机访问。 (3)插入和删除操作会引起大量元素的移动。2.链式结构(1)结点除自身的信息域外,还有表示关联信息的指针域。因此,链式存储结构的存储密度小、存储空间利用率低。(2)在逻辑上相邻的结点在物理上不必相邻,因此,不可以随机存取,只能顺序存取。(3)插入和删除操作方便灵活,不必移动结点只需修改结点中的指针域即可。使原创 2020-05-13 22:04:27 · 8145 阅读 · 0 评论 -
线性表的顺序结构的基本操作(C语言实现)
顺序表上基本操作的实现1. 初始化一个顺序表//初始化一个线性表void InitList(struct SeqList *L) { L->CurSize = InitSize; L->elem = (ElemType *)malloc(InitSize * sizeof(ElemType)); if (!L->elem) exit(1); L->leng...原创 2020-04-14 23:30:55 · 232 阅读 · 0 评论 -
顺序表(线性表的顺序结构)的概念
顺序表的概念1.1线性表的顺序存储又称为顺序表。顺序表的逻辑结构和物理结构是一样的。也就是说,在逻辑结构中相邻的两个元素,在物理位置上也相邻。这也就意味着我们可以直接用数组下标访问元素。1.2 计算顺序表元素的内存地址 线性表的顺序存储结构由公式可知,内存地址与 首个元素的地址、元素类型的大小、数组下标 有关。1.3 线性表顺序存储类型描述#define...原创 2020-04-14 23:12:12 · 1492 阅读 · 0 评论