数据结构
文章平均质量分 53
记录数据结构的一些题目。
番蔬条
这个作者很懒,什么都没留下…
展开
-
关于顺序表的算法题(C语言实现)
1、在顺序表L中查找第一个值最大的元素,并删除该元素。void fun(SqList *&L){ int i,j=0; for (i=1;i<L->length;i++) if (L->data[i]>L->data[j]) j=i; for (i=j;i<L->length-1;i++) L->data[i]=L->data[i+1]; L->length--;}2、在顺序表L中查找原创 2022-04-19 22:41:14 · 5897 阅读 · 1 评论 -
某个含有n个元素的线性表在各种存储结构中对应运算的时间复杂度
假设某个含有n个元素的线性表有如下8个运算:Ⅰ. 查找序号为i(1≤i≤n)的元素Ⅱ. 查找第一个值为x的元素Ⅲ. 插入新元素作为第一个元素Ⅳ. 插入新元素作为最后一个元素Ⅴ. 插入第i(2≤i≤n)个元素Ⅵ. 删除第一个元素Ⅶ. 删除最后一个元素Ⅷ. 删除第i(2≤i≤n)个元素现设计该线性表的如下存储结构:① 顺序表② 带头结点的单链表③ 带头结点的循环单链表④ 不带头结点仅有尾结点指针标识的循环单链表⑤ 带头结点的双链表⑥ 带头结点的循环双链原创 2022-04-19 22:12:23 · 2015 阅读 · 0 评论 -
关于链表的算法题(C语言实现)
1、将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。算法思想:合并后的新表使用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,依次摘取其中较小者重新链接在Lc表的最后。如果两个表中的元素相等,只摘取La表中的元素,删除Lb表中的元素,这样确保合并后表中无重复的元素。当一个表到达表尾结点,为空时,将非空表的剩余原创 2022-04-19 16:28:01 · 3442 阅读 · 0 评论 -
数据结构-简答题&算法题2
简答题&算法题原创 2022-04-11 16:59:19 · 2955 阅读 · 0 评论 -
栈顶指针不同进行“进、出”栈的易错题
栈顶指针不同进行“进、出”栈的易错题原创 2022-04-10 18:38:35 · 3664 阅读 · 5 评论 -
数据结构-简答题1
一些关于数据结构的简答题,答案重点词标注红色,相关代码采用的是C/C++的。原创 2022-04-06 15:21:45 · 1005 阅读 · 0 评论 -
关于【线性表】一些算法
记录~原创 2022-03-21 22:01:44 · 2909 阅读 · 0 评论 -
【数据结构】树-一些算法的应用
数据结构中关于树的算法应用,基本上是以遍历为基础的改一下就可以,背住!原创 2022-03-20 16:23:31 · 1011 阅读 · 0 评论 -
数据结构-算法题分享1
本文主要是分享在练习过程中遇到的算法题。原创 2022-03-12 17:00:47 · 1428 阅读 · 0 评论 -
关于链表的算法题
1、题目:已知 p 指向双向循环链表中的一个结点,其结点结构为 data、llink、rlink 三个域, 写出算法 change(p),交换 p 所指向的结点和它的前驱结点的顺序。思路:假设p所指向的结点的前驱结点q,首先应该把q的地址找到,一共要移动六个指针,有7条语句,6条是要移动的,先连后改,改的时候也是要先指向,后改(先下后上),最后三步不能改变顺序。void Exchange (LinkedList p){ // P是双向循环链表中的一个结点,本算法将p所指结点与其前驱结点交换原创 2022-03-10 20:35:47 · 1216 阅读 · 0 评论 -
在带头结点的单链表中删除最小值结点
题目:试编写在带头结点的单链表中删除(一个)最小值结点的(高效)算法。void delete (Linklist &L)。提示:假设第一个结点就是最小的,要高效,只能遍历一次,单链表中删除结点,必须知道待删除的最小结点的前一个结点,才能用前一个结点删掉它后一个结点,所以要定义一个指针。首先,本身就有一个头结点,假设有p,q,pre,p作为工作指针,q作为最小值的结点的指向,pre指向最小结点的前驱结点。LinkList Delete (LinkList L){ LinkList p原创 2022-03-10 19:19:09 · 5483 阅读 · 1 评论 -
求 A 与 B 的交集,并存放于 A 链表中
题目:已知两个链表 A 和 B 分别表示两个集合,其元素递增排列。编一函数,求 A 与 B 的交集,并存放于 A 链表中。LinkList Union(LinkList la,LinkList lb){ LinkList pa=la->next,pb=lb->next; pc—la; // 结果表中当前合并结点的前驱的指针 while(pa && pb) if (pa->data = pb->data) { //如果相等就原创 2022-03-10 17:37:59 · 894 阅读 · 1 评论 -
实现求两个集合的并集的运算 A=A∪B
题目:已知递增有序的两个单链表 A,B 分别存储了一个集合。设计算法实现求两个集合的并集的运算 A=A∪B。提示:由于单链表有序递增,所以集合的合并是A并B保存到A中,如果出现相同结点,只保留一个,所以要在这两个链表中遍历。又因为链表是递增的,所以先判断小的结点留下来A,如果相等就保留A中的,删除B中的,如果A大于B,则B中的工作指针向下移。LinkList Union(LinkList ha, LinkList hb){ pa=ha->next; pb=hb->nex原创 2022-03-10 17:28:32 · 4327 阅读 · 1 评论 -
利用原来两个单链表的结点存放归并后的单链表
题目:假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法,将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。提示:按元素值递增次序排列,由小到大,链表必须是顺序访问,合并后需要递减次序排列,由大到小。此时,可以用链表的头插法。假设一个单链表为pa,一个单链表为pb,首先,pa和pb要比较,取出小的元素连在lc表的表头后面,当连完结点后,工作结点要往后移。如果pa和pb表长不等,若有一个表剩余元素,都必须逆置插入到合并表中。由于合并原创 2022-03-09 22:47:17 · 359 阅读 · 0 评论