数据结构和算法
文章平均质量分 59
...
x_lcw
这个作者很懒,什么都没留下…
展开
-
循环链表,双向链表,静态链表
循环链表首尾相接。// 两个头指针为 LA,LB 的循环单链表合并为一个循环单链表 Linklist merge_1(Linklist LA,Linklist LB){ Linklist RA=LA; Linklist RB=LB; while(RA->next!=LA) RA=RA->next; // 此时 RA,RB 为尾指针 改变其 next 指向就可完成合并。 while(RB->next!=LB) RB=RB->next; RA->next=LB原创 2021-09-29 22:32:38 · 121 阅读 · 0 评论 -
线性表——删除重复元素
题目:移除线性表中的所有重复元素;不要使用额外的数组空间,在使用 O(1) 额外空间的条件下完成。typedef int DataType;struct seqList{ int MAXNUM; // 能存放的最大元素个数 int curNum; // 数据元素的个数 DataType *element; };typedef struct seqList *PseqList;实现的两种思路void delDuplicate_seq(PseqList L原创 2021-09-17 00:13:27 · 4217 阅读 · 0 评论 -
二叉搜索/查找/排序树,平衡二叉树
文章目录二叉搜索/查找/排序树操作集:查找,插入,删除平衡二叉树(AVL树)二叉搜索/查找/排序树二分查找:要查找的数据 事先进行 有序化的组织,查找的顺序 形成了一个判定树的结构,查找效率就是树的高度。有没有可能直接把元素放到树上,放到树上,树的动态性比较强,插入删除比线性更加方便。直接把元素就放到树上,将数据按以下规则直接放到树上1.非空左子树的值 < 其根节点的值 < 非空右子树的值2.左右子树都是二叉搜索树操作集:查找,插入,删除查找 时间复杂度 取决于 树的高原创 2021-11-19 22:33:58 · 1016 阅读 · 0 评论 -
哈夫曼树创建_以及_构造哈夫曼编码
通过 最小堆,来构建 哈夫曼树,再通过 遍历,借一个数组 来保存 路径 上的 编码。#include<iostream>using namespace std;// 哈夫曼树节点 typedef struct huff{ int data; struct huff * left; struct huff * right;}*huffman;// 最小堆 typedef struct zui_xiao_dui{ huffman elements[10]; int num;原创 2021-11-13 12:44:33 · 259 阅读 · 0 评论 -
单链表。。。
存储一组具有一定逻辑关系的数据数组:一段连续的内存空间顺序存储。链表:一种新的存储方式。原创 2021-09-19 19:52:38 · 252 阅读 · 0 评论 -
排序:归并排序
// 这里递归实现 分解void merge_sort(int * arr, int p, int q){ if(arr == NULL || p == q){ return; } int mid = (p + q)/2; merge_sort(arr,p,mid); merge_sort(arr,mid+1,q); merge(arr,p,mid,q); } 这里实现的是,两个有序数组,合并的问题tempLeft 存放左边数据tempRight 存放右边数据void me原创 2022-04-12 14:19:31 · 87 阅读 · 0 评论 -
最大堆,哈夫曼树
哈夫曼树原创 2021-11-09 14:36:32 · 828 阅读 · 0 评论 -
排序整理(交换,分配)
快速排序堆排序桶排序基数排序希尔排序原创 2021-12-09 21:47:31 · 232 阅读 · 0 评论 -
二分的一些东西 (一)
文章目录最原始二分当 target在数组中时当 target不在数组中时leetcode35 搜索插入位置leetcode34 在排序数组中查找元素的第一个和最后一个位置最原始二分单调且没有重复元素,进行查找当 target在数组中时int binarySearch(int[] nums,int target,int left, int right){ while (left <= right) { // 这里 注意是 <= int mid =原创 2021-09-23 01:07:52 · 74 阅读 · 0 评论 -
leetcode88 合并两个有序数组
题目两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。合并后数组存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。从后面考虑问题,便于元素的挪位。通过元素之间的比较,来进行选择填充。void m原创 2021-09-24 17:27:01 · 52 阅读 · 0 评论 -
树 / 二叉树的基本内容
深度与高度由根通往 每个节点 的路径 是唯一的。根节点 R 的深度是 0。根节点 R 的高度=树的高度=树中所有节点 深度 的最大值。叶节点的高度是 0。原创 2021-11-14 13:17:07 · 491 阅读 · 0 评论 -
1_递归思想
函数调用及返回每次函数调用是一个压入栈的过程,当函数运行结束后,会返回到上一个函数中,弹栈。举例:调用情况:main()调用A(),A()调用B(),B()调用C() ---> 递进至边界返回情况:C()执行完回到B(),B()执行完回到A(),A()执行完回到main() ---> 从边界回归到原问题递归结束条件,递归边界,递归出口递归调用公式,递归链条,对原问题进行划分时,对子问题和原问题处理的逻辑相似性一些理解将原问题划归为子问题,这个子问题通常是通往原创 2021-10-24 21:07:45 · 58 阅读 · 0 评论