- 博客(55)
- 问答 (1)
- 收藏
- 关注
原创 8-3 深度优先
1、dfs算法模板 void dfs(char[][] grid,int x,int y){ //递归出口 if(x<0|| y<0 || x>=grid.length || y>=grid[0].length || grid[x][y]=='0'){ return; } ...
2020-01-19 01:34:07 209
原创 8-2 动态规划
1、最长公共子序列(LCS)class Solution { public int lcs(String A, String B) { if(A==null || B==null || A.length()==0 || B.length()==0){ return 0; } int m=A.length(),n=...
2020-01-19 01:28:47 145
原创 8-1 二分法
1、经典二分查找:跳出循环end在start右边class Solution{ public int binarySearch(int[] arr,int target){ if(arr==null || arr.length==0){ return -1; } int start = 0,en...
2020-01-19 01:23:26 207
原创 7-19 并查集的算法
//并查集的算法#include <stdio.h>#define MaxSize 100#define N 10 //问题涉及的人数,人的编号从1到N#define M 7 //亲戚关系个数#define Q 3 //询问个数typedef struct node{ int data; //结点对应人的编号 int rank; //结点对应秩 int...
2018-03-11 15:28:11 322
原创 7-18 中序线索二叉树的算法
//中序线索二叉树的算法#include <stdio.h>#include <malloc.h>#define MaxSize 100typedef char ElemType;typedef struct node { ElemType data; int ltag,rtag; //增加的线索标记 struct node *lchild; ...
2018-03-11 15:26:44 430
原创 7-17 先序、中序和后序递归遍历算法
//先序、中序和后序递归遍历算法#include "btree.cpp"void PreOrder(BTNode *b) //先序遍历的递归算法{ if (b!=NULL) { printf("%c ",b->data); //访问根结点 PreOrder(b->lchild); //先序遍历左子树 PreOrder(b->rchild); //先...
2018-03-11 15:25:41 1358
原创 7-16 先序、中序和后序非递归遍历算法
//先序、中序和后序非递归遍历算法#include "btree.cpp"typedef struct { BTNode *data[MaxSize]; //存放栈中的数据元素 int top; //存放栈顶指针,即栈顶元素在data数组中的下标} SqStack; //顺序栈类型void InitStack(SqStack *&s) //初始化...
2018-03-11 15:24:43 530
原创 7-15 层次遍历算法
//层次遍历算法#include "btree.cpp"#define MaxSize 100//--------------------------------------------------------//--循环队列基本运算算法----------------------------------//----------------------------------------...
2018-03-11 12:52:55 428
原创 7-14 构造哈夫曼树和哈夫曼编码的算法
//构造哈夫曼树和哈夫曼编码的算法#include <stdio.h>#include <string.h>#define N 50 //叶子结点数#define M 2*N-1 //树中结点总数typedef struct{ char data[5]; //结点值 double weight; //权重 int parent; //双亲结点 i...
2018-03-11 12:51:50 1783
原创 7-13 构造二叉树的算法
//构造二叉树的算法#include "btree.cpp"BTNode *CreateBT1(char *pre,char *in,int n)/*pre存放先序序列,in存放中序序列,n为二叉树节点个数,本算法执行后返回构造的二叉链的根节点指针*/{ BTNode *b; char *p; int k; if (n<=0) return NULL; b=(BTNode...
2018-03-11 12:50:51 691
原创 7-12 二叉树的基本运算算法
//二叉树的基本运算算法#include <stdio.h>#include <malloc.h>#define MaxSize 100typedef char ElemType;typedef struct node { ElemType data; //数据元素 struct node *lchild; //指向左孩子节点 struct node...
2018-03-11 12:49:40 790
原创 7-11 将二叉树的顺序存储结构转换成二叉链存储结构
//将二叉树的顺序存储结构转换成二叉链存储结构#include "btree.cpp"#define MaxSize 30typedef char Elemtype;typedef ElemType SqBTree[MaxSize];BTNode *trans(SqBTree a,int i){ BTNode *b; if (i>MaxSize) return(NULL)...
2018-03-11 12:48:42 6297 2
原创 7-10 采用层次遍历方法输出从根节点到每个叶子节点的路径逆序列
//采用层次遍历方法输出从根节点到每个叶子节点的路径逆序列#include "btree.cpp"#define MaxSize 100//----------------------------------------------------------//-非环形队列的基本运算算法---------------------------------//----------------...
2018-03-08 22:00:25 1418
原创 7-9 采用后序遍历非递归算法输出从根节点到每个叶子节点的路径逆序列
//采用后序遍历非递归算法输出从根节点到每个叶子节点的路径逆序列#include "btree.cpp"typedef struct { BTNode *data[MaxSize]; //存放栈中的数据元素 int top; //存放栈顶指针,即栈顶元素在data数组中的下标} SqStack; //顺序栈类型void InitStack(SqStack ...
2018-03-08 21:59:31 2218
原创 7-8 输出二叉树中值为x的节点的所有祖先
//输出二叉树中值为x的节点的所有祖先#include "btree.cpp"bool ancestor(BTNode *b,ElemType x){ if (b==NULL) return false; else if (b->lchild!=NULL && b->lchild->data==x || b->rchild!=NULL &...
2018-03-08 21:58:25 6256 1
原创 7-7 判断两棵二叉树是否相似
//判断两棵二叉树是否相似#include "btree.cpp"bool Like(BTNode *b1,BTNode *b2)//b1和b2两棵二叉树相似时返回true,否则返回false{ bool like1,like2; if (b1==NULL && b2==NULL) return true; else if (b1==NULL ...
2018-03-08 21:57:16 772
原创 7-6 求二叉树中指定层次的节点个数
//求二叉树中指定层次的节点个数#include "btree.cpp"void Lnodenum(BTNode *b,int h,int k,int &n){ if (b==NULL) //空树直接返回 return; else //处理非空树 { if (h==k) n++; //当前访问的节点在第k层时,n增1 else if (h<k) //...
2018-03-08 21:56:02 2879
原创 7-5 求二叉树中指定节点的层次
//求二叉树中指定节点的层次#include "btree.cpp"int Level(BTNode *b,ElemType x,int h) //h置初值1{ int l; if (b==NULL) return(0); else if (b->data==x) return(h); else { l=Level(b->lchild,x,h+1); //在左子树...
2018-03-06 23:31:40 10058 1
原创 7-4 输出一棵给定二叉树的所有叶子节点
//输出一棵给定二叉树的所有叶子节点#include "btree.cpp"void DispLeaf(BTNode *b){ if (b!=NULL) { if (b->lchild==NULL && b->rchild==NULL) printf("%c ",b->data); //访问叶子节点 DispLeaf(b->lch...
2018-03-06 23:30:37 6210
原创 7-3 计算一棵给定二叉树的所有节点个数
//计算一棵给定二叉树的所有节点个数#include "btree.cpp"int Nodes(BTNode *b){ int num1,num2; if (b==NULL) return 0; else return Nodes(b->lchild)+Nodes(b->rchild)+1;}int main(){ BTNode *b; CreateBT...
2018-03-06 23:29:44 2611 1
原创 7-2 孩子兄弟链存储结构下树的基本运算算法和求树t的高度
//孩子兄弟链存储结构下树的基本运算算法和求树t的高度#include <stdio.h>#include <malloc.h>#define MaxSize 100typedef struct tnode { char data; //节点的值 struct tnode *hp; //指向兄弟 struct tnode *vp; //指...
2018-03-06 23:29:09 1960
原创 7-1 孩子链存储结构下树的基本运算算法和求树t的高度
//孩子链存储结构下树的基本运算算法和求树t的高度#include <stdio.h>#include <malloc.h>#define MaxSons 10#define MaxSize 100typedef struct node{ char data; //节点的值 struct node *sons[MaxSons]; //指向孩子节...
2018-03-06 23:27:13 2804 1
原创 6-5 稀疏矩阵的三元组表示
#include <stdio.h>#define M 6#define N 7#define MaxSize 100 //矩阵中非零元素最多个数typedef int ElemType;typedef struct{ int r; //行号 int c; //列号 ElemType d; //元素值} TupNode; ...
2018-02-16 20:51:59 720
原创 6-4 稀疏矩阵的十字链表表示
//稀疏矩阵的十字链表表示#include <stdio.h>#include <malloc.h>#define M 3 //矩阵行#define N 4 //矩阵列#define Max ((M)>(N)?(M):(N)) //矩阵行列较大者typedef int ElemType;typedef ...
2018-02-16 20:50:29 713
原创 6-3 广义表基本运算算法
//广义表基本运算算法#include <stdio.h>#include <malloc.h>#include "glnode.h"int GLLength(GLNode *g) //求广义表g的长度{ int n=0; GLNode *g1; g1=g->val.sublist; //g指向广义表的第一个元素 while (g1!=NUL...
2018-02-16 20:48:37 809
原创 6-2 求广义表g的原子个数
#include "glist.cpp"//解法1的方法int Count1(GLNode *g) //求广义表g的原子个数{ int n=0; GLNode *g1=g->val.sublist; while (g1!=NULL) //对每个元素进行循环处理 { if (g1->tag==0) //为原子时 n++; //原子个数...
2018-02-16 20:45:31 1569
原创 6-1利用数组求解约瑟夫问题
//利用数组求解约瑟夫问题#include <stdio.h>#define MaxSize 100void josephus(int n,int m){ int p[MaxSize]; int i,j,t; for (i=0;i<n;i++) //构建初始序列 p[i]=i+1; t=0; //首次报数的起始位置 printf("出列顺序:...
2018-02-16 20:43:42 774
原创 5-6 求解Hanoi问题的递归算法
汉诺塔问题递归模型:h(n,a,b,c)函数功能:将n个盘片借助b塔,从a塔移动到c塔 h(n,a,b,c)= 取一个盘片,从a移动到c n=1 (1)将n-1个盘片借助c,从a移动到b n>1 (2)取一个盘片,从a移动到c (3)将n-1个盘片借助a,从b移...
2018-02-13 13:14:11 670
原创 5-5 递归算法求解从入口到出口的所有迷宫路径
//递归算法求解从入口到出口的所有迷宫路径#include <stdio.h>#define MaxSize 100#define M 4#define N 4int mg[M+2][N+2]={ {1, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 1, 1}, {1, 0, 1, 0, 0, 1}, {1, 0, 0, 0, 1, 1}, {...
2018-02-13 13:11:44 5131
原创 5-4 释放一个不带头结点的单链表L中所有结点的递归算法
//释放一个不带头结点的单链表L中所有结点的递归算法 #include "linklist.cpp"void release(LinkNode *&L){ if (L!=NULL) { release(L->next); free(L); }}int main(){ LinkNode *h; int a[]={1,2,3,4}; InitList(h)...
2018-02-13 13:10:44 2505
原创 5-3 求一个顺序表中最大元素的递归算法
//求一个顺序表中最大元素的递归算法 #include <stdio.h>#define MaxSize 50typedef int ElemType; typedef struct { ElemType data[MaxSize]; //存放顺序表元素 int length; //存放顺序表的长度} SqList; //顺序表的类型Ele...
2018-02-13 13:08:54 3616
原创 5-2 求实数数组A[0..n-1]中的最小值的递归算法
//求实数数组A[0..n-1]中的最小值#include <stdio.h>double Min(double A[],int i){ double min; if (i==0) return A[0]; else { min=Min(A,i-1); if (min>A[i]) return(A[i]); else return(min); }}int...
2018-02-13 13:07:42 2313 1
原创 5-1 求n!的递归算法
//求n!的递归算法#include <stdio.h>int fun(int n){ if (n==1) return(1); else return(fun(n-1)*n); }int main(){ printf("10!=%d\n",fun(10)); return 1;}
2018-02-13 13:06:10 3007
原创 5-0 关于递归本质的理解
1、理解递归,关键是脑中有一幅代码的图片,函数执行到递归函数入口时,就扩充一段完全一样的代码,执行完扩充的代码并return后,继续执行前一次递归函数中递归函数入口后面的代码),阅读递归函数最容易的方法不是纠缠于它的执行过程,而是相信递归函数会顺利完成它的任务。如果你的每个步骤正确无误,你的限制条件设置正确,并且每次调用之后更接近限制条件,递归函数总是能正确的完成任务。2、递归算法的设计:(1)递...
2018-02-13 13:04:39 272
原创 4-7 kmp算法
串的模式匹配2--Knuth-Morris-Pratt算法(kmp算法)算法描述:(1) 关于next数组的实现算法:void GetNext(String s,int next[ ]){ int j,k; j=0;k=-1; next[0]=-1; while(每个字符的前的串中进行遍历) { ...
2018-02-12 09:54:43 256
原创 4-6 BF算法
串的模式匹配--Brute-Force算法(BF算法)//BF算法#include "sqstring.cpp"int index(SqString s,SqString t){ int i=0,j=0; while (i<s.length && j<t.length) { if (s.data[i]==t.data[j]) //继续匹配下一个字符...
2018-02-09 13:13:48 337
原创 4-5把串s中最先出现的子串"ab"改为"xyz"
//把串s中最先出现的子串"ab"改为"xyz"#include "listring.cpp"void Repl(LinkStrNode *&s){ LinkStrNode *p=s->next,*q; int find=0; while (p->next!=NULL && find==0) //查找'ab'子串 { if (p->dat..
2018-02-09 13:09:06 1448 1
原创 4-4求串s中第一个最长的连续相同字符构成的平台
//求串s中第一个最长的连续相同字符构成的平台#include "sqstring.cpp"void LongestString(SqString s,int &index,int &maxlen){ int length,i=1,start; //length保存平台的长度 index=0,maxlen=1; //index保存最长平台在s中的开始位置,maxle...
2018-02-09 13:08:06 967 1
原创 4-3按字典顺序比较两个串s和t的大小
//按字典顺序比较两个串s和t的大小#include "sqstring.cpp"int Strcmp(SqString s,SqString t){ int i,comlen; if (s.length<t.length) comlen=s.length; //求s和t的共同长度 else comlen=t.length; for (i=0;i<comlen;i++) ...
2018-02-09 13:07:01 3260 1
原创 4-2链串基本运算的算法
//链串基本运算的算法#include <stdio.h>#include <malloc.h>typedef struct snode { char data; struct snode *next;} LinkStrNode;void StrAssign(LinkStrNode *&s,char cstr[]) //字符串常量cstr赋给串s...
2018-02-09 13:05:41 1424
空空如也
关于okhttp3 API的一点事
2018-08-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人