考研数据结构(每日一题)目录

考研数据结构(每日一题)目录

将这些天做的题进行了一个小汇总,点击相应的链接就能找到啦。
有些代码会有点小问题,各位大佬求指教。

  • day60
    题目:设计一个算法用于判断带头结点的循环双链表是否对称。
    https://blog.csdn.net/DTRblank/article/

  • day59
    题目:已知一个整数序列A=(a0,a1,…,an-1),其中0<=a1<n(0<=i<n)。若存在ap1=ap2=…=apm=x且m>n/2(0<=pk<n,1<=k<=m),则称x为A的主元素。例如A=(0,5,5,3,5,7,5,5),则5为主元素,又如A=(0,5,5,3,5,1,5,7),则A中没有主元素。假设A中的n个元素保存在一个一维数组中,请设计一个尽可能高效的算法,找出A的主元素。若存在主元素,则输出该元素,否则输出-1.
    https://blog.csdn.net/DTRblank/article/

  • day58
    题目:设有一个带头节点的循环单链表,其结点值均为正整数。设计一个算法,反复找出单链表中结点值最小的结点并输出,然后将该结点从中删除,直到单链表为空为止,再删除表头结点。
    https://blog.csdn.net/DTRblank/article/

  • day57
    题目:后序遍历的非递归算法
    https://blog.csdn.net/DTRblank/article/

  • day56
    题目:计算二叉树中所有的叶子结点个数
    https://blog.csdn.net/DTRblank/article/

  • day55:
    题目:已知一棵二叉树链式存储,设计一个算法,输出根结点到每个叶子结点的路径。
    https://blog.csdn.net/DTRblank/article/

  • day54:
    题目:假设二叉树采用二叉链表结构存储,设计一个算法,求二叉树中值为x的层号。
    https://blog.csdn.net/DTRblank/article/

  • day53:
    题目:已知由n(n>=2)个正整数构成得到集合A={ak|0<=k<n},将其划分为两个不相交的子集A1和A2,元素个数分别是n1和n2,A1和A2中的元素之和分别为S1和S2,设计一个尽可能高效的划分算法,满足|n1-n2|最小且|S1-S2|最大。
    https://blog.csdn.net/DTRblank/article/

  • day52:
    题目:荷兰国旗问题:设有一个仅有红、白、蓝三种颜色的条块组成的条块序列,请编写一个时间复杂度为O(n)的算法,使得这些条块按红、白、蓝的顺序排好,即排成荷兰国旗图案。
    https://blog.csdn.net/DTRblank/article/

  • day51:
    题目:编写一个算法,使之能够在数组L[1…n]中找出第k小的元素(即从小到大排序后处于第k个位置的元素)
    https://blog.csdn.net/DTRblank/article/

  • day50:
    题目:已知线性表按顺序存储,且每个元素都是不相同的整数型元素,设计所有奇数移动到所有偶数前面的算法。
    https://blog.csdn.net/DTRblank/article/

  • day49:
    题目:编写双向冒泡排序算法,在正反两个方向交替进行扫描,即第一趟把关键字最大的元素放在序列的最后面,第二趟把关键字最小的元素放在序列的最前面,如此反复进行。
    https://blog.csdn.net/DTRblank/article/

  • day48:
    题目:编写一个递归算法,在一棵有n个结点的、随机建立起来的二叉排序树上查找第k(1<=k<=n)小的元素,并返回指向该结点的指针。要求算法的平均时间复杂度为O(log2n),二叉排序树的每个结点中除data,lchild,rchild等数据成员外,增加一个count成员,保存以该结点为根的子树上的结点个数。
    https://blog.csdn.net/DTRblank/article/

  • day47
    题目:
    1.设计一个算法,求出给定二叉排序树中最小和最大的关键字
    2.设计一个算法,从大到小输出二叉排序树中所有值不小于k的关键字
    https://blog.csdn.net/DTRblank/article/

  • day46
    题目:判断二叉树是否是平衡二叉树的算法。
    https://blog.csdn.net/DTRblank/article/

  • day45
    题目:设计一个算法,求出指定结点在给定二叉排序树中的层次。
    https://blog.csdn.net/DTRblank/article/

  • day44
    题目:判断给定的二叉树是否是二叉排序树。
    https://blog.csdn.net/DTRblank/article/

  • day43
    题目:折半查找的递归算法。初始调用时。low为1,high为ST.length。
    https://blog.csdn.net/DTRblank/article/

  • day42
    题目:已知无向连通图G由顶点集V和遍集E组成,|E|>0,当G中度为奇数的顶点个数为不大于2的偶数时,G存在包含所有边且长度为|E|的路径(称为EL路径)。设图G采用邻接矩阵存储。请设计算法 int IsExistEL(MGraph G),判断G是否存在EL路径,若存在,则返回0。
    https://blog.csdn.net/DTRblank/article/

  • day41
    题目:设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出。例如,当下列两棵表达式树作为算法的输入时:输出的等价中缀表达式分别为(a+b)(c(-d))和(a*b)+(-(c-d))
    https://blog.csdn.net/DTRblank/article/

  • day40
    题目:二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和,给定一棵二叉树T,采用二叉链表存储,结点结构为(left,weight,right),其中叶结点的weight域保存该结点的非负权值,设root为指向T的根结点的指针,请设计求T的WPL的算法。
    https://blog.csdn.net/DTRblank/article/

  • day39
    题目:写出在中序线索二叉树里查找指定结点在后序的前驱结点的算法。
    https://blog.csdn.net/DTRblank/article/

  • day38
    题目:试设计判断两棵二叉树是否相似的算法。所谓二叉树T1和T2相似,指的是T1和T2都是空的二叉树或都只有一个根结点,或T1的左子树和T2的左子树是相似的,且T1的右子树和T2的右子树是相似的。
    https://blog.csdn.net/DTRblank/article/

  • day37
    题目:设计一个算法将二叉树的叶结点按从左到右的顺序连成一个单链表,表头指针为head,二叉树按二叉链表方式存储,链接时用叶结点的右指针域来存放单链表指针。
    https://blog.csdn.net/DTRblank/article/

  • day36
    题目:设有一棵满二叉树(所有结点值均不同),已知其先序序列为pre,求其后序序列post。
    https://blog.csdn.net/DTRblank/article/

  • day35
    题目:假设二叉树采用二叉链表存储结构,求非空二叉树b的宽度(即具有结点数最多的那一层的结点个数)
    https://blog.csdn.net/DTRblank/article/

  • day34
    题目:设一棵二叉树的结点结构为(LLINK,INFO,RLINK),ROOT为指向该二叉树根结点的指针,p和q分别指向该二叉树中任意两个结点的指针,试编写算法ANCESTOR(ROOT,p,q,r)找到p和q的最近公共祖先结点r。
    https://blog.csdn.net/DTRblank/article/

  • day33
    题目:在二叉树中查找值为x的结点,编写算法打印值为x的结点的所有祖先,假设值为x的结点不多于一个。
    https://blog.csdn.net/DTRblank/article/

  • day32
    题目:已知二叉树以二叉链表存储,编写算法完成:对于树中每个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
    https://blog.csdn.net/DTRblank/article/

  • day31
    题目:假设二叉树采用二叉链存储结构存储,设计一个算法,求先序遍历序列中第k(1<=k<=二叉树中结点个数)个结点的值
    https://blog.csdn.net/DTRblank/article/

  • day30
    题目:设树B是一棵采用链式结构存储的二叉树,编写一个把树B中所有结点的左右子树进行交换的函数。
    https://blog.csdn.net/DTRblank/article/

  • day29
    题目:假设二叉树采用二叉链表存储结构存储,试设计一个算法,计算一棵给定二叉树的所有双分支(度为2)结点个数。
    https://blog.csdn.net/DTRblank/article/

  • day28
    题目:二叉树按二叉链表形式存储,写一个判别给定二叉树是否是完全二叉树的算法。
    https://blog.csdn.net/DTRblank/article/

  • day27
    题目:假设二叉树采用二叉链表存储结构,设计一个算法求二叉树的高度(递归和非递归)
    https://blog.csdn.net/DTRblank/article/

  • day26
    题目:设有两个栈s1、s2都采用顺序栈方式,并共享一个存储区[0,…,maxsize-1],为了尽量利用空间,减少溢出的可能,可采用栈顶相向、迎面增长的存储方式。试设计s1、s2有关入栈和出栈的操作算法。
    https://blog.csdn.net/DTRblank/article/

  • day25
    题目:设单链表的表头指针为L,结点结构由data和next两个域构成,其中data域为字符型,试设计算法判断该链表的全部n个字符是否中心对称,例如xyx、xyyx都是中心对称。
    https://blog.csdn.net/DTRblank/article/

  • day24
    题目:用单链表保存m个整数,结点的结构为[data][link],且|data|<=n(n为正整数),要求设计一个时间复杂度尽可能高效的算法,对于链表中data的绝对值相等的结点,仅保留第一次出现的结点而删除其余绝对值相等的结点。
    https://blog.csdn.net/DTRblank/article/

  • day23
    题目:设线性表L=(a1,a2,a3,…,an-2,an-1,an)采用带头结点的单链表保存,请设计一个空间复杂度为O(1)且时间上尽可能高效的算法,重新排列L中的各节点,得到线性表L’=(a1,an,a2,an-1,a3,an-2,…)
    https://blog.csdn.net/DTRblank/article/

  • day22
    题目:假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,可共享相同的后缀存储空间
    https://blog.csdn.net/DTRblank/article/

  • day21
    题目:已知一个带有表头结点的单链表。假设该链表只给出了头指针list,在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数),若查找成功,算法输出该结点的data域的值。并返回1;否则,返回0。
    https://blog.csdn.net/DTRblank/article/

  • day20
    题目:在一个递增有序的线性表中,有数值相同的元素存在,若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素。例如(7,10,10,21,30,42,42,51,70)将变为(7,10,21,30,42,51,70)
    https://blog.csdn.net/DTRblank/article/

  • day19
    题目:设A和B是两个单链表(带头节点),其中元素递增有序,设计一个算法从A和B中的公共元素产生单链表C,要求不破坏A、B的结点
    https://blog.csdn.net/DTRblank/article/

  • day18
    题目:设C={a1,b1,a2,b2,…,am,bn}为线性表,采用头结点的hc单链表存放,设计一个就地算法,将其拆分为两个线性表,使得A={a1,a2,…,an},B={bn,…,b2,b1}
    https://blog.csdn.net/DTRblank/article/

  • day17
    题目:将一个带头节点的单链表A分解为两个带头结点的单链表A和B,使得A表中含有原表序号为奇数的袁术,而B表中含有原表中序号为偶数的元素,且保持其相对顺序不变。
    https://blog.csdn.net/DTRblank/article/

  • day16
    题目:给定一个带头结点的单链表,设head为头指针,结点结构为(data,next),data为整型元素,next为指针,试写出算法,按照递增次序输出单链表中各节点的数据元素,并释放结点所占的存储空间(要求:不允许使用数组作为辅助空间)
    https://blog.csdn.net/DTRblank/article/

  • day15
    题目:给定两个单链表,编写算法找出两个链表的公共结点。
    https://blog.csdn.net/DTRblank/article/

  • day14
    题目:设在一个带表头结点的单链表中所有元素结点的数据值无序,试编写一个函数,删除表中所有介于给定的两个值(作为函数参数给出)之间的元素的元素(若存在)
    https://blog.csdn.net/DTRblank/article/

  • day13
    题目:给定一个含n(n>=1)个整数的数组,请谁一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。例如,数组{-5,3,2,3}中未出现的最小正整数是1,数组{1,2,3}中未出现的最小正整数是4。
    https://blog.csdn.net/DTRblank/article/

  • day12
    题目:一个长度为L(L>=1)的升序序列S,处在第L/2个位置的数称为S的中位数。例如,若序列S1=(11,13,15,17,19),则S1的中位数是15,两个序列的中位数是含它们所有元素的升序序列的中位数。例如,若S2=(2,4,6,8,20),则S1和S2的中位数是11.现在有两个等长升序序列A和B,试设计一个转时间和空间两方面都尽可能高效的算法,找出两个序列A和B的中位数。
    https://blog.csdn.net/DTRblank/article/

  • day11
    题目:从顺序表中删除具有最小值的元素,(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。
    https://blog.csdn.net/DTRblank/article/

  • day10
    题目:(1)使用头插法建立单链表
    (2)使用尾插法建立单链表
    https://blog.csdn.net/DTRblank/article/

  • day09
    题目:试编写带头节点的单链表L中删除一个最小值节点的高效算法(假设最小值节点是唯一的)
    https://blog.csdn.net/DTRblank/article/

  • day08
    题目:设将n(n>1)个整数存放到一维数组R中。设计一个在实践和空间两方面都尽可能高效的算法,将R中保存的序列循环左移p(0<p<n)个位置,即将R中的数据由(X0,X1,…,Xn-1)变换为(Xp,Xp+1,…,Xn-1,X0,X1,…,XP-1)
    https://blog.csdn.net/DTRblank/article/

  • day07
    题目:已知在一维数组A[m+n]中依次存放两个线性表(a1,a2,a3…,am)和(b1,b2,b3…,bn)。试编写一个函数,将数组中两个顺序表的位置互换,即将(b1,b2,b3…bn)放在(a1,a2,a3…,am)的前面。
    https://blog.csdn.net/DTRblank/article/

  • day06
    题目:从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同。
    https://blog.csdn.net/DTRblank/article/

  • day05
    题目:从顺序表中删除其值在给定值s与t之间(包含s和t,要求s<t)的所有元素,如果s或t不合理或顺序表为空,则显示出错信息并退出运行。
    https://blog.csdn.net/DTRblank/article/

  • day04
    题目:对长度为n的顺序表L,编写一个时间复杂度为O(n),空间复杂度为O(1)的算法,将算法删除线性表中所有值为x的数据元素。
    https://blog.csdn.net/DTRblank/article/

  • day03
    题目:设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)
    https://blog.csdn.net/DTRblank/article/

  • day02
    题目:将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表。
    https://blog.csdn.net/DTRblank/article/

  • day01
    题目:在带头结点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,试编写算法以实现上述操作。
    https://blog.csdn.net/DTRblank/article/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值