
数据结构
wellnw
Linux/openwrt/MTK/QCA/Realtek
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【算法导论】分治策略求最大子数组问题分析、伪代码及C代码实现
最大子数组问题分析寻找A的和最大的非空连续子数组,我们称这样的连续子数组为最大子数组。如下所示,A[1..16]的最大子数组为A[8..11],其和为43,是A的所有子数组中和最大的。注意: 只有当数组中包含负数时,最大子数组问题才有意义。如果所有数组元素都是非负数,子数组问题没有任何难度,因为整个数组的和肯定最大。使用分治策略的求解方法我们要寻找子数组A[low..high]的最大子数组。使用分治技术意味着我们要将子数组划分为两个规模尽量相等的子数组...原创 2022-01-02 21:41:03 · 2412 阅读 · 2 评论 -
【算法导论-分治法】归并排序伪代码及C语言代码实现举例
分治法 许多有用的算法在结构上是递归的:为了解决一个给定的问题,算法一次或者多次递归地调用其自身以解决紧密相关的若干子问题。这些算法典型地遵循分治法的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后再合并这些子问题的解来建立原问题的解。分治模式在每层递归时都有三个步骤:分解原问题为若干子问题,这些子问题是原问题的规模较小的实例解决这些子问题,递归地求解各子问题。然后若干子问题的规模足够小,则直接求解。合并这些子问题的解成原问题的解。归并...原创 2021-12-19 21:59:39 · 5952 阅读 · 0 评论 -
【算法导论】插入排序伪算法及C代码实现举例(降序)
伪算法INSERTION-SORT(A)1 for j = 1 to A.length2 key = A[j]3 //Insert A[j] into the sorted sequence A[1..j-1]4 i = j - 15 while i >= 0 and A[i] < key6 A[i+1] = A[i]7 i = i - 18 A[i+1]原创 2021-12-19 14:04:56 · 412 阅读 · 0 评论 -
【算法导论】插入排序伪算法及C代码实现举例(升序)
伪算法INSERTION-SORT(A)1 for j = 2 to A.length2 key = A[j]3 //Insert A[j] into the sorted sequence A[1..j-1]4 i = j - 15 while i > 0 and A[i] > key6 A[i+1] = A[i]7 i = i - 18 ...原创 2021-12-19 11:44:57 · 762 阅读 · 0 评论 -
数据结构----快速排序程序例子(c语言)
例子程序#include <stdio.h>void QuickSort(int *a, int low, int high);int FindPos(int *a, int low, int high);int main(void){ int a[6] = {2,1,0,5,4,3}; int i; QuickSort(a,0,5); //0 第一个元素下标 5最后一个元素下标 for(i=0; i<6;++i) printf("%d ",a[i]);原创 2021-11-14 16:05:41 · 1076 阅读 · 0 评论 -
数据结构----二叉树已知中序和后序序遍历序列求先序遍历
说明 通过先序和中序或者中序和后序我们可以还原出原始二叉树,但是通过先序和后序是无法还原出原始二叉树也即是说,只有通过先序和中序,或者中序和后序我们才可以唯一的确定一个二叉树。已知中序和后序中序:BDCEAFHG后序:DECBHGFA还原二叉树求先序ABCDEFGH...原创 2021-11-13 14:48:08 · 2367 阅读 · 0 评论 -
数据结构----二叉树已知先序和中序遍历序列求后序遍历
说明 通过先序和中序或者中序和后序我们可以还原出原始二叉树,但是通过先序和后序是无法还原出原始二叉树也即是说,只有通过先序和中序,或者中序和后序我们才可以唯一的确定一个二叉树。例子一已知先序和中序先序:ABCDEFGH中序:BDCEAFHG还原二叉树求后序DECBHGFA例子二已知先序和中序先序:ABDGHCEFI中序:GDHBAECIF还原二叉树求后序GHDBEIFCA...原创 2021-11-13 14:39:18 · 757 阅读 · 0 评论 -
数据结构----二叉树后序遍历
后序遍历 先中序遍历左子树,再中序遍历右子树,再访问根节点后序遍历例子一后序遍历顺序:BDMFLECA原创 2021-11-13 14:05:54 · 591 阅读 · 0 评论 -
数据结构----二叉树中序遍历
中序遍历 中序遍历左子树,再访问根节点,再中序遍历右子树中序遍历例子一中序遍历顺序:BDCEA LFNQM中序遍历例子二中序遍历顺序:BDCA MQELN原创 2021-11-13 13:56:45 · 1681 阅读 · 2 评论 -
数据结构----二叉树先序遍历
先序遍历 先访问根节点,再先序访问左子树,再先序访问右子树二叉树例子一先序访问顺序:ABDCEFG例子二先序访问顺序:ABCDEFGQMNS原创 2021-11-13 13:37:11 · 451 阅读 · 0 评论 -
数据结构----森林转化为二叉树存储
一般树转化为二叉树方法 设法保证任意一个节点的左指针域指向它的第一个孩子,右指针域指向它的下一个兄弟,只要满足此条件,即可将一个普通树转化为二叉树森林森林是由树组成,所以只需要将森林里面的树转化为二叉树存储即可,树与树的根节点当作兄弟节点处理转为为二叉树...原创 2021-11-13 11:36:54 · 656 阅读 · 0 评论 -
数据结构----链式二叉树例子程序(先序、中序、后序访问)
#include <stdio.h>#include <malloc.h>struct BTNode{ char data; struct BTNode *pLchild;//p是指针 L是左 child是孩子 struct BTNode *pRchild; };/* 二叉树示意图 A | | B C | D | E.原创 2020-08-16 16:57:36 · 147 阅读 · 0 评论 -
数据结构---汉诺塔例子程序
#include <stdio.h>void hannuota(int n, char A, char B, char C){ /* * 如果是1个盘子 * 直接将A柱子上的盘子从A移到C * 否则 * 先将A柱子上的n-1个盘子借助C移到B * 直接将A柱子上的盘子从A移到C * 最后将B柱子上的n-1个盘子借助A移到C */ if (1 == n) printf("将编.原创 2020-08-10 23:07:43 · 260 阅读 · 0 评论 -
数据结构---循环队列例子
#include <stdio.h>#include <malloc.h>typedef struct Queue{ int *pBase; int front; int rear;}QUEUE;void init(QUEUE *pQ);bool en_queue(QUEUE *pQ, int val);void traverse_queue(QUEUE *pQ);bool full_queue(QUEUE *pQ);bool out_que.原创 2020-08-04 22:38:53 · 291 阅读 · 0 评论 -
数据结构学习笔记-栈例子程序
#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <stdbool.h>typedef struct Node{ int data; struct Node* pNext;}NODE, *PNODE;typedef struct Stack{ ...原创 2020-05-05 22:37:59 · 204 阅读 · 0 评论 -
数据结构学习笔记-链表例子程序
#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <stdbool.h>typedef struct Node{ int data; struct Node *pNext;}NODE, *PNODE;// function PNODE create...原创 2020-05-05 22:37:06 · 179 阅读 · 0 评论 -
数据结构学习笔记一基本定义
数据结构定义 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法。 数据结构 = 个体 + 个体的关系 算法 = 对存储数据的操作 线性结构: ...原创 2020-05-05 22:36:24 · 323 阅读 · 0 评论