<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jiangjun_feng的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jiangjun_feng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jiangjun_feng]]></copyright><item><title><![CDATA[C语言 散列表 分离链接法]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117520117</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117520117</guid><author>jiangjun_feng</author><pubDate>Thu, 03 Jun 2021 14:06:26 +0800</pubDate><description><![CDATA[运行结果正确
怎么说呢，散列表最重要的还是怎么设计散列函数，解决冲突还是很简单的

完整代码
#include&lt;stdio.h&gt;
#include&lt;malloc.h&gt;
#include&lt;stdlib.h&gt;
 //定义链表
 typedef struct list_node *list_point ;
 struct list_node{
 	int val;
 	list_point next;
 };
 //定义散列表
 typedef struct table_nod]]></description><category></category></item><item><title><![CDATA[C语言 桶排序]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117480352</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117480352</guid><author>jiangjun_feng</author><pubDate>Wed, 02 Jun 2021 19:31:01 +0800</pubDate><description><![CDATA[运行结果正确

完整代码
#include&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include&lt;malloc.h&gt;
void simple_bucket_sort(int arr[],int n,int max);
void tra_arr(int arr[],int n);
int main(){
	int arr[10]={
		10,9,9,9,5,5,5,1,1,1
	};
	simple]]></description><category></category></item><item><title><![CDATA[C语言 基数排序]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117480040</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117480040</guid><author>jiangjun_feng</author><pubDate>Wed, 02 Jun 2021 19:23:37 +0800</pubDate><description><![CDATA[运行结果正确

完整代码（审核中）
主要代码
#include"队列声明.h"

void tra_arr(int arr[],int n);
void get_pos_value(int in,int pos,int &amp;result);
void base_sort(int arr[],int n,int pos_num);
int main(){
	int arr[10]={
		999,888,777,66,55,44,3,2,1,33 
	};
	base_sort(arr,10,3);
	]]></description><category></category></item><item><title><![CDATA[C语言 所有排序方法的实现]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117404323</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117404323</guid><author>jiangjun_feng</author><pubDate>Sun, 30 May 2021 20:05:05 +0800</pubDate><description><![CDATA[运行结果正确
还是快速排序难一些。

完整代码
#include&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include&lt;malloc.h&gt;
void swap(int *a,int *b);
void select_sort(int arr[],int n);
void tra_arr(int arr[],int n);
void insert_sort(int arr[],int n); 
voi]]></description><category></category></item><item><title><![CDATA[C语言 关键路径计算]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117365808</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117365808</guid><author>jiangjun_feng</author><pubDate>Fri, 28 May 2021 16:05:43 +0800</pubDate><description><![CDATA[运行结果正确

完整代码
还在审核
主要代码
#include"邻接表声明.h"
#include"队列声明.h"
#include"栈的声明.h"
//统计入度
void count_degree(adj_g_point g,int degree[]){
	//初始化数组
	for(int i=0;i&lt;g-&gt;v_num;i++){
		degree[i]=0;
	} 
	//开始统计
	adj_e_point e;
	int j;
	for(int i=0;i&lt;g-&gt;v_num;i]]></description><category></category></item><item><title><![CDATA[C语言 拓扑排序 邻接表实现]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117333161</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117333161</guid><author>jiangjun_feng</author><pubDate>Thu, 27 May 2021 17:10:01 +0800</pubDate><description><![CDATA[运行结果正确

完整代码       还在审核
主要代码
#include"邻接表声明.h"
#include"队列声明.h"

//拓扑排序
void top_sort(adj_g_point g,int result[]){
	//首先找一个数组把入度存一下 
	int *in_degree=(int*)malloc((g-&gt;v_num)*sizeof(int));
	//初始化这个入度表
	for(int i=0;i&lt;g-&gt;v_num;i++){
		in_degree[i]=0;
]]></description><category></category></item><item><title><![CDATA[C语言 最小生成树 prim算法]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117294633</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/117294633</guid><author>jiangjun_feng</author><pubDate>Wed, 26 May 2021 15:54:17 +0800</pubDate><description><![CDATA[运行结果正确

主程序
#include"矩阵声明.h"
#include"邻接表声明.h"
//在没访问过的顶点中找到与当前树距离最近的顶点
void find_min(mat_g_point g,int dist[],int &amp;min_id){
	//首先给一个最大值去比较
	int min=1000;
	//对每个顶点进行遍历
	for(int i=0;i&lt;g-&gt;nv;i++){
		//如果没访问过，且权值比当前还要小
		if(dist[i]!=0&amp;&amp;dist[]]></description><category></category></item><item><title><![CDATA[C语言 多源最短路径 邻接矩阵]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116992790</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116992790</guid><author>jiangjun_feng</author><pubDate>Tue, 18 May 2021 16:06:20 +0800</pubDate><description><![CDATA[运行结果正确
输出路径顶点竟然花了我最多的时间。。。。。。

#include&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include&lt;malloc.h&gt;
//邻接矩阵表示图
typedef struct g_node *g_point;
struct g_node{
	int ne;//边数 
	int nv;//节点数 
	int arr[100][100];
	int data[100];
};]]></description><category></category></item><item><title><![CDATA[C语言 单源最短路径 有权 邻接矩阵]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116986770</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116986770</guid><author>jiangjun_feng</author><pubDate>Tue, 18 May 2021 13:59:28 +0800</pubDate><description><![CDATA[运行结果正确
注意初始化的时候对path的特殊处理

#include&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include&lt;malloc.h&gt;
//邻接矩阵表示图
typedef struct g_node *g_point;
struct g_node{
	int ne;//边数 
	int nv;//节点数 
	int arr[100][100];
	int data[100];
};
//边]]></description><category></category></item><item><title><![CDATA[C语言 完全二叉搜索树]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116920741</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116920741</guid><author>jiangjun_feng</author><pubDate>Mon, 17 May 2021 11:05:45 +0800</pubDate><description><![CDATA[运行结果正确
其实计算树高那个地方我不是很懂为什么要/log(2)。

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;math.h&gt;
//求左子树的节点数
void left_tree_total(int n,int &amp;total){
	//首先，算一下完美二叉树的树高
	int h=(int)floor(log(n+1)/log(2)); 
	//计算完全二叉树的最后一层的叶子节点数
	int x=n-pow(]]></description><category></category></item><item><title><![CDATA[C语言 前序和中序遍历确定后序遍历]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116903795</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116903795</guid><author>jiangjun_feng</author><pubDate>Sun, 16 May 2021 21:46:55 +0800</pubDate><description><![CDATA[运行结果正确
还是很讨厌递归

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
int pre[100];//先序遍历数组 
int in[100];//中序遍历 数组 
int post[100]={0};//后序遍历数组 
//后序遍历结果
void tra_post(int total){
	for(int i=0;i&lt;total;i++){
		printf("%d ",post[i]);
	}
	printf("\n");
} 
//由先]]></description><category></category></item><item><title><![CDATA[C语言 深度优先搜索 非递归]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116891159</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116891159</guid><author>jiangjun_feng</author><pubDate>Sun, 16 May 2021 14:24:35 +0800</pubDate><description><![CDATA[运行结果正确
注意，实际上栈里面存的是经过的节点

#include&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include&lt;malloc.h&gt;
//创建邻接表
//这个边的数据结构是用来给我们输入使用的
typedef struct se_node *se_point;
struct se_node{
	int v1,v2;
	int weight;
} ;
//创建邻接表的边 
typedef s]]></description><category></category></item><item><title><![CDATA[C语言 邻接表 广度优先搜索 非递归]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116867516</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116867516</guid><author>jiangjun_feng</author><pubDate>Sat, 15 May 2021 23:45:13 +0800</pubDate><description><![CDATA[运行结果正确
非递归虽然实现起来比较复杂，但是容易纠错，也更好理解

#include&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include&lt;malloc.h&gt;
//创建邻接表
//这个边的数据结构是用来给我们输入使用的
typedef struct se_node *se_point;
struct se_node{
	int v1,v2;
	int weight;
} ;
//创建邻接表的边 
]]></description><category></category></item><item><title><![CDATA[C语言 邻接表表示无向图]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116845453</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116845453</guid><author>jiangjun_feng</author><pubDate>Sat, 15 May 2021 13:19:16 +0800</pubDate><description><![CDATA[运行结果正确
用邻接表来表示图要创造的结构体太多了，我感觉其实有更简单的结构体来表示图。

#include&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include&lt;malloc.h&gt;
//创建邻接表
//这个边的数据结构是用来给我们输入使用的
typedef struct se_node *se_point;
struct se_node{
	int v1,v2;
	int weight;
} ;
]]></description><category></category></item><item><title><![CDATA[C语言 邻接矩阵表示无向图]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116833595</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116833595</guid><author>jiangjun_feng</author><pubDate>Sat, 15 May 2021 09:38:49 +0800</pubDate><description><![CDATA[运行结果正确

#include&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include&lt;malloc.h&gt;
//邻接矩阵表示图
typedef struct g_node *g_point;
struct g_node{
	int ne;//边数 
	int nv;//节点数 
	int arr[100][100];
	int data[100];
};
//边的数据结构
typedef struc]]></description><category></category></item><item><title><![CDATA[c语言 集合 按秩归并 压缩路径]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116757183</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116757183</guid><author>jiangjun_feng</author><pubDate>Thu, 13 May 2021 17:07:16 +0800</pubDate><description><![CDATA[运行结果正确
感觉比二叉树还简单

#include&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include&lt;malloc.h&gt;
//先定义一个栈 
	typedef	 struct Stack{
		int base[100];
		int top;
		
	}stack,*stack_point;
	

//初始化一个集合的数组,数组的下标就是集合的元素，数组的值就是这个元素的父节点 
void ]]></description><category></category></item><item><title><![CDATA[c语言 赫夫曼树和编码（哈夫曼树和编码）]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116672188</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116672188</guid><author>jiangjun_feng</author><pubDate>Tue, 11 May 2021 21:58:16 +0800</pubDate><description><![CDATA[运行结果正确
感觉最难的是树的合并

#include&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include&lt;malloc.h&gt;
//构造哈夫曼树
typedef struct {
	int val;
	int parent,left,right;
}node,*tree;
//构造哈夫曼编码
typedef struct{
	int weight;
	int code[10];
}code_nod]]></description><category></category></item><item><title><![CDATA[C语言 建堆]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116594483</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116594483</guid><author>jiangjun_feng</author><pubDate>Mon, 10 May 2021 14:12:12 +0800</pubDate><description><![CDATA[运行结果正确
实际上，建堆和删除堆是一样的。

#include&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include&lt;malloc.h&gt;
//构造结构堆
typedef struct node *heap;
struct node {
	//这是一个数组 
	int *base;
	int max;
	int size;
};
//遍历这个堆
void tra(heap h){
	for(int ]]></description><category></category></item><item><title><![CDATA[C语言 堆的插入与删除]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116592908</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116592908</guid><author>jiangjun_feng</author><pubDate>Mon, 10 May 2021 13:17:14 +0800</pubDate><description><![CDATA[运行结果正确
感觉堆还是比二叉搜索树容易实现

#include&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include&lt;malloc.h&gt;
//构造结构堆
typedef struct node *heap;
struct node {
	//这是一个数组 
	int *base;
	int max;
	int size;
};
//遍历这个堆
void tra(heap h){
	for(int ]]></description><category></category></item><item><title><![CDATA[c语言 是否同一颗二叉搜索树]]></title><link>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116570035</link><guid>https://blog.youkuaiyun.com/jiangjun_feng/article/details/116570035</guid><author>jiangjun_feng</author><pubDate>Sun, 09 May 2021 20:36:50 +0800</pubDate><description><![CDATA[运行结果正确

#include&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include&lt;malloc.h&gt;
//构造结构树
typedef struct node *tree;
struct node{
	int val;
	int flag;
	tree left;
	tree right;
};
//遍历
void pre_tra(tree t){
	tree t1=t;
	if(t1==NUL]]></description><category></category></item></channel></rss>