数据结构
__tian__
我走过的路,每一步都算数
展开
-
字典树
Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。 它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。核心思想Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。...原创 2020-02-15 21:20:12 · 293 阅读 · 0 评论 -
Python实现深度和广度搜索
class list_node(object): def __init__(self, val): self.val = val self.next = None# 建立邻接表def create_linjiebiao(data): all_head = [] for i in range(1, 9): all_he...原创 2020-01-02 19:11:08 · 403 阅读 · 0 评论 -
老鼠走迷宫问题
问题描述:给定一个二维数组,数组中1表示墙壁,0表示通路,由此数组可展示为一个迷宫图。给定入口位置和出口位置,判断之间是否存在通路并显示出走出迷宫的道路。class Node(object): def __init__(self, x, y): self.x = x self.y = y self.next = Nonecla...原创 2019-12-25 19:16:35 · 502 阅读 · 0 评论 -
快排
//QuickSort#include<stdio.h>#include<stdlib.h>#define N 10void Sort(int a[], int low,int high);void Swap(int &m,int &n);int main(){ int i; int a[N]= {-1,50,10,90,30...原创 2018-06-09 17:30:45 · 419 阅读 · 0 评论 -
希尔排序ShellSort
//ShellSort#include<stdio.h>#include<stdlib.h>#define N 10void ShellSort(int array[],int length);int main(){ int i; int array[N]={3,8,2,5,9,4,50,30,96,54}; ShellSort(arra...原创 2018-06-11 16:07:37 · 397 阅读 · 0 评论 -
字符串全排列
//全排列 #include<stdio.h> #include<iostream> #include<stdlib.h> #include<string.h> using namespace std; void Permutation(int from ,int to); void swap(int &a,int &...原创 2018-06-11 21:21:47 · 370 阅读 · 0 评论 -
贪心算法思想
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。一、 基本概念:先看一个找零钱的例子,假设有3种硬币,面值分别为1元,5角,1角。这三种硬币数量不限,现在要给顾客找2元7角钱...原创 2018-08-19 14:40:56 · 3364 阅读 · 0 评论 -
编程练习(1)
题目: 1 有这样一个数字,ABCD * E ==DCBA ,其中各个数字不相等,编写一个程序,计算出ABCD各代表什么数字。 #include <stdio.h>int fun(int i,int j);int reverse(int i);int main(){ int i,j; for (i=1000; i<9999; i+...原创 2018-08-23 21:08:48 · 580 阅读 · 0 评论 -
动态规划
简介: 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到...原创 2018-11-13 22:29:16 · 400 阅读 · 0 评论 -
SJF
#include<stdio.h>#define MAX 100typedef struct PCB{ char ProName[10]; //作业ID float ArriveTime; //到达时刻 float Fun_time; //运行时间 float EndTime; ...原创 2019-04-21 17:20:06 · 1462 阅读 · 0 评论 -
折半查找
折半查找:#include<stdio.h>int Binary_Search(int a[],int n,int key){ int low, high ,mid; low=0; high =n-1; while(low<=high) { mid=(low+high)/2; if(key>a...原创 2018-05-26 17:53:17 · 437 阅读 · 0 评论 -
时间复杂度
时间复杂度定义在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)=O(f(n)。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。一顿头晕眼花的解释。就记做O()吧...原创 2019-07-11 21:00:51 · 414 阅读 · 0 评论 -
Python模拟链表
"""利用类来模拟结点,next存储下一个结点对象,最后一个为None。链表的算法思想和语言无关,都是一样的思想。"""class Node(object): # 结点类 def __init__(self, value): self.value = value self.next = None# 创建def create(): ...原创 2019-07-13 22:09:31 · 485 阅读 · 0 评论 -
二叉树的建立与遍历
#include<stdio.h>#include<string.h>#include<stdlib.h>typedef char TElemType;//结构定义typedef struct BiTNode{ TElemType data; //结点数据 struct BiTNode *lchild,*rchild; //左右...原创 2018-04-22 10:37:32 · 666 阅读 · 0 评论 -
链表的基本操作
#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>typedef struct Node{ int x; struct Node *next;} LNode,*Linklist;//建立链表Linklist CreateList(int n){ ...原创 2018-04-12 20:11:44 · 432 阅读 · 0 评论 -
带有头结点的栈的实现
#include<stdio.h>#include <stdlib.h>#define ERROR 0#define OK 1typedef void Status;typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode * next;} LNode,*Linklist;Sta...原创 2018-04-13 13:02:09 · 1131 阅读 · 0 评论 -
用栈进行括号匹配
题目要求:给定一个字符串,其中的字符只包含三种括号:花括号{ }、中括号[ ]、圆括号( ),即它仅由 “( ) [ ] { }” 这六个字符组成。设计算法,判断该字符串是否有效,即字符串中括号是否匹配。括号匹配要求括号必须以正确的顺序配对,如 “{ [ ] ( ) }” 或 “[ ( { } [ ] ) ]” 等为正确的格式,而 “[ ( ] )” 或 “{ [ ( ) }” 或 “( { } ...原创 2018-04-24 15:48:48 · 563 阅读 · 0 评论 -
求二叉树树的高度和叶结点个数
#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct BitNode//结构定义{ char data; struct BitNode *lchild; struct BitNode *rchild;} BitNode, *BiTree;voi...原创 2018-05-21 10:51:13 · 1525 阅读 · 0 评论 -
中序线索化二叉树和遍历
#include<stdio.h>#include<stdlib.h>#include<string.h>typedef enum {link,Thread} PointerTag;typedef char TElemType;typedef struct Node{ TElemType data; PointerTag Ltag,R...原创 2018-05-21 16:09:33 · 1548 阅读 · 0 评论 -
已知树的前序和中序求后序
题目要求:给定一颗二叉树的先序序列和中序序列,建立二叉链表,输出后序我的思路:由先序知道根结点,然后看中序,知道根结点的左右子树有哪些,然后递归实现#include <stdio.h>#include<stdlib.h>#include<string.h>#define N 20typedef char ElemType;char a[N],b[N];...原创 2018-05-31 18:35:19 · 672 阅读 · 0 评论 -
Dijkstra算法
void Dijkstra ( int G[][N],int v0,int dist[],int path[],int n){ int i,j,k,s[n],minD; for(i=1;i<=n;i++) { s[i]=0; dist[i]=G[v0][i]; if(!=v0&&dist[i]<...原创 2018-12-27 18:18:05 · 508 阅读 · 0 评论 -
栈的顺序表操作
//顺序表实现栈的简单功能#include <stdio.h>#define ERROR 0#define OK 1#define MAXSIZE 100typedef int SElemType;typedef int Status;typedef struct{ SElemType data[MAXSIZE]; int top;} SqStack;Status Init...原创 2018-04-12 15:17:06 · 610 阅读 · 0 评论