![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
PLUS_WAVE
这个作者很懒,什么都没留下…
展开
-
icoding数据结构——顺序表 数据调整(详细注释)
已知顺序表L中的数据元素类型为int。设计算法将其调整为左右两部分,左边的元素(即排在前面的)均为奇数,右边所有元素(即排在后面的)均为偶数,并要求算法的时间复杂度为O(n),空间复杂度为O(1)。原创 2023-07-10 15:52:58 · 883 阅读 · 0 评论 -
icoding数据结构——顺序表 删除重复(详细注释)
编写算法,在一非递减的顺序表L中,删除所有值相等的多余元素。要求时间复杂度为O(n),空间复杂度为O(1)。原创 2023-07-10 15:52:04 · 963 阅读 · 0 评论 -
icoding数据结构——顺序表 删除指定范围(详细注释)
设计一个高效的算法,从顺序表L中删除所有值介于x和y之间(包括x和y)的所有元素(假设y>=x),要求时间复杂度为O(n),空间复杂度为O(1)。原创 2023-07-10 15:51:21 · 1048 阅读 · 0 评论 -
icoding数据结构——链表 删除范围内结点(详细注释)
已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度。原创 2023-07-10 15:50:31 · 890 阅读 · 0 评论 -
icoding数据结构——链表 合并(详细注释)
设线性表A=(a1, a2,…,am),B=(b1, b2,…,bn),试写一个按下列规则合并A、B为线性表C的算法,使得:C= (a1, b1,…,am, bm, bm+1, …,bn) 当m≤n时;或者C= (a1, b1,…,an, bn, an+1, …,am) 当m>n时。线性表A、B、C均以单链表作为存储结构,且C表利用A表和B表中的结点空间构成。原创 2023-07-10 15:49:01 · 965 阅读 · 1 评论 -
icoding数据结构——链表 倒数查找(详细注释)
已知一个带有表头结点的单链表, 假设链表只给出了头指针L。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。函数原型为:int lnk_search(LinkList L, int k, ElemType* p_ele)若查找成功,函数通过指针参数 p_ele 返回该结点 data 域的值,此时函数返回 1;否则,函数返回 0。原创 2023-07-10 15:48:00 · 1097 阅读 · 0 评论 -
icoding数据结构——栈 后缀表达式计算(详细注释)
请使用已定义好的栈完成后缀表达式计算:(1)如果是操作数,直接入栈(2)如果是操作符op,连续出栈两次,得到操作数x 和 y,计算 x op y,并将结果入栈。后缀表达式示例如下:9 3 1 - 3 * + 10 2 / +13 445 + 51 / 6 -操作数、操作符之间由空格隔开,操作符有 +,-,*, /, %共 5 种符号,所有操作数都为整型。原创 2023-07-10 15:46:51 · 1053 阅读 · 0 评论 -
icoding数据结构——队列 循环链表表示队列(详细注释)
假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),请完成下列任务:1: 队列初始化,成功返回真,否则返回假: bool init_queue(LinkQueue *LQ);2: 入队列,成功返回真,否则返回假: bool enter_queue(LinkQueue *LQ, ElemType x);3: 出队列,成功返回真,且*x为出队的值,否则返回假 bool leave_queue(LinkQueue *LQ, ElemType *x);原创 2023-07-10 15:45:54 · 1034 阅读 · 0 评论 -
icoding数据结构——数组合并(详细注释)
假设有 n 个长度为 k 的已排好序(升序)的数组,请设计数据结构和算法,将这 n 个数组合并到一个数组,且各元素按升序排列。即实现函数: void merge_arrays(const int* arr, int n, int k, int* output);其中 arr 为按行优先保存的 n 个长度都为 k 的数组,output 为合并后的按升序排列的数组,大小为 n×k。时间要求(评分规则),当 n > k 时:满分:时间复杂度不超过 O(n×k×log(n))原创 2023-06-04 11:45:00 · 324 阅读 · 0 评论 -
icoding数据结构——堆化(详细注释)
请实现最小堆的“堆化”函数:void min_heapify(PMinHeap pq, int i);其中 pq指向堆,i 为堆元素在数组中的下标。该函数假设元素i对应的子树都已经是最小堆(符合最小堆的要求),但元素i为根的子树并不是最小堆,min_heapify将对元素i及其子树的各结点进行调整,使其为一个最小堆。原创 2023-06-04 11:41:43 · 239 阅读 · 0 评论 -
icoding数据结构——堆元素插入(详细注释)
请实现最小堆的元素插入函数:bool heap_insert_value(PMinHeap pq, int value);其中 pq指向堆,value 为要插入的堆元素。原创 2023-06-04 11:40:43 · 224 阅读 · 0 评论 -
icoding数据结构——堆初始化(详细注释)
请实现最小堆的初始化函数:void init_min_heap(PMinHeap pq, int capacity);其中 pq指向堆,capacity为堆元素数组的初始化大小。原创 2023-06-04 11:39:40 · 201 阅读 · 0 评论 -
icoding数据结构——堆辅助函数(详细注释)
请实现最小堆的四个辅助函数:int parent(int i); //返回堆元素数组下标为 i 的结点的父结点下标int left(int i); //返回堆元素数组下标为 i 的结点的左子结点下标int right(int i); //返回堆元素数组下标为 i 的结点的右子结点下标void swap_node(MinHeapNode *x, MinHeapNode *y); //交换两个堆元素的值原创 2023-06-04 11:36:51 · 256 阅读 · 0 评论 -
icoding数据结构——哈希表添加(详细注释)
请实现 hash_add_int 函数,向哈希表中添加元素,其中键类型为char*, 元素类型为int。在添加过程中,如果要添加的键值key已在哈希表中,且对应的值value也已存在,则函数返回 HASH_ALREADY_ADDED;如果要添加的键值key已在哈希表中,但对应的值value不同,则函数将value值更新到哈希表中,之后返回 HASH_REPLACED_VALUE;如果要添加的键值key不在哈希表中,则函数创建 HashEntry 类型,并将其加入到哈希表中,且函数返回 HASH_ADDED。原创 2023-06-03 17:04:02 · 1360 阅读 · 0 评论 -
icoding数据结构——哈希表创建(详细注释)
哈希表(Hash Table,也叫散列表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做哈希函数,存放记录的数组称做哈希表。请实现 create_hash 函数,创建指定大小的哈希表。原创 2023-06-03 17:03:12 · 1247 阅读 · 0 评论 -
icoding数据结构——AVL添加(详细注释)
平衡二叉树,是一种二叉排序树,其中每个结点的左子树和右子树的高度差至多等于1。它是一种高度平衡的二叉排序树。请实现平衡二叉树的插入算法原创 2023-06-03 17:02:10 · 1033 阅读 · 0 评论 -
icoding数据结构——邻接表2(详细注释)
试在邻接表存储结构上实现图的基本操作 del_vertex原创 2023-05-27 15:00:01 · 864 阅读 · 0 评论 -
icoding数据结构——邻接表1(详细注释)
试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc原创 2023-05-27 14:57:36 · 944 阅读 · 0 评论 -
icoding数据结构——邻接矩阵(详细注释)
试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc原创 2023-05-27 14:57:35 · 1015 阅读 · 0 评论 -
icoding数据结构——树转二叉树(详细注释)
使用队列,编写transfrom函数,将普通树转换成对应的二叉树。原创 2023-04-30 16:32:44 · 1243 阅读 · 1 评论 -
icoding数据结构——共同祖先(详细注释)
假设二叉树采用二叉链表方式存储, root指向根结点,p所指结点和q所指结点为二叉树中的两个结点,编写一个计算它们的最近的共同祖先原创 2023-04-30 16:30:54 · 952 阅读 · 0 评论 -
icoding数据结构——路径(详细注释)
假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点,编写函数 path,计算root到 node 之间的路径,(该路径包括root结点和 node 结点)。原创 2023-04-30 16:28:52 · 950 阅读 · 1 评论 -
icoding数据结构——先序遍历(详细注释)
已知二叉树按照二叉链表方式存储,利用栈的基本操作写出先序遍历非递归形式的算法原创 2023-04-30 16:27:05 · 1016 阅读 · 0 评论 -
icoding数据结构——十字链表(详细注释)
1)实现十字链表的初始化操作:其中 L 指向 CrossList 结构,且各成员已被初始化为0;A 为 ElemType 类型数组中第一个元素的地址,元素的个数为 m×n 个,按行优先存储(即A[0] 为十字链表第1行第1列的元素;A[1] 为第1行第2列的元素,A[n] 为第2行第1列的元素,A[n+1] 为第2行第2个元素);m 表示十字链表的行数,n 表示十字链表的列数。init_cross_list 函数将 ElemType 数组中非0元素保存到十字链表中,函数返回非 0 元素的个数。原创 2023-04-25 21:53:55 · 1263 阅读 · 0 评论 -
icoding数据结构——矩阵加法(详细注释)
题目:实现三元组表示的两个稀疏矩阵的加法。pM, pN, pQ 分别指向三个矩阵,当 pM 和 pN 两个矩阵不可加时,函数返回 false,否则函数返回 true,且 pQ 指向两个矩阵的和。原创 2023-04-25 21:50:59 · 950 阅读 · 0 评论 -
icoding数据结构——串比较(详细注释)
题目:不调用库函数,自己实现字符串的比较操作:该操作当比较的两个字符是都是字母,且两个字符互为大小写(如a和A、e和E)时认为两个字符相同,否则不同,其比较结果按这两个字符的原值确定。函数的返回值规定如下:返回值 < 0:第一个不匹配的字符在 ptr1 中的值低于 ptr2 中的值返回值 == 0:两个字符串的内容相等返回值 > 0:第一个不匹配的字符在 ptr1 中的值大于在 ptr2 中的值原创 2023-04-16 20:57:43 · 997 阅读 · 1 评论