<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xifengcode]]></title><description><![CDATA[C/C++程序与算法交流]]></description><link>https://blog.youkuaiyun.com/xifengcode</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xifengcode]]></copyright><item><title><![CDATA[数据结构：二叉排序树的建立与查找]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/109684750</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/109684750</guid><author>xifengcode</author><pubDate>Fri, 13 Nov 2020 23:59:09 +0800</pubDate><description><![CDATA[以下代码为二叉排序树的插入、删除与查找。主要的算法参考了严蔚敏老师的数据结构教材。在VC++ 6.0 和 Dev-C++下编译通过。




#include "stdio.h"
#include "stdlib.h"
typedef struct BiTNode 
{
	struct BiTNode  *lchild, *rchild;
	int data;
} BiTNode, *BiTree;

BiTree Root;

int SearchBST(BiTree T, int key, BiTre.]]></description><category></category></item><item><title><![CDATA[数据结构：拓扑排序 完整代码]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/109553744</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/109553744</guid><author>xifengcode</author><pubDate>Sat, 07 Nov 2020 22:57:48 +0800</pubDate><description><![CDATA[假设有向图以邻接表存储，每个顶点的名称都用一个字母表示。先输入顶点的数量，再输入各个顶点的名称，最后输入各条边。在输入边时，每次输入两个顶点的名称。输入不存在的两个顶点代表边输入结束。代码主要参考了严蔚敏老师的数据结构教材。在VC++ 6.0和Dev-C++下编译通过。






#include "stdio.h"
#include "stdlib.h"
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0

typedef int S.]]></description><category></category></item><item><title><![CDATA[数据结构：栈的基本操作的实现   完整代码]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/109546020</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/109546020</guid><author>xifengcode</author><pubDate>Sat, 07 Nov 2020 13:45:51 +0800</pubDate><description><![CDATA[以下代码为栈的存储结构定义和栈的基本操作的实现。代码主要来自于严蔚敏老师的数据结构教材。代码在VC++ 6.0 和 Dev-C++下编译通过。


#include&lt;stdio.h&gt; 
#include&lt;stdlib.h&gt; 
#include&lt;math.h&gt; 

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0

typedef int Status; 
typedef int Boolean; /* ]]></description><category></category></item><item><title><![CDATA[数据结构：以深度优先搜索方式产生图的生成树  完整代码]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/109394662</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/109394662</guid><author>xifengcode</author><pubDate>Fri, 30 Oct 2020 22:49:30 +0800</pubDate><description><![CDATA[图的深度优先搜索可以用来解决很多问题，例如可以用于产生图的生成树。程序代码在VC++6.0和Dev-C++下编译通过。

算法的输入和输出为：




#include "stdio.h"
#include "stdlib.h"

#define MAX_VERTEX_NUM 100
 
typedef int AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef struct { // 图的定义
	char vexs[MAX_VERTEX_NUM]; 
	A]]></description><category></category></item><item><title><![CDATA[数据结构：以广度优先搜索方式产生图的生成树   完整代码]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/109394106</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/109394106</guid><author>xifengcode</author><pubDate>Fri, 30 Oct 2020 22:13:37 +0800</pubDate><description><![CDATA[图的广度优先搜索可以用来解决很多问题，例如可以用于产生图的生成树。程序代码在VC++6.0和Dev-C++下编译通过。

算法的输入和输出为：






#include "stdio.h"
#include "stdlib.h"
#include &lt;queue&gt;
using namespace std;
 
#define MAX_VERTEX_NUM 100
 
typedef int AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef .]]></description><category></category></item><item><title><![CDATA[数据结构：图的邻接矩阵存储与广度优先搜索  完整代码]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/109369824</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/109369824</guid><author>xifengcode</author><pubDate>Thu, 29 Oct 2020 21:03:07 +0800</pubDate><description><![CDATA[图的搜索是数据结构课程非常重要的内容。以下代码的存储结构定义、广度优先搜索等算法主要来自于严蔚敏老师的数据结构教材。以下代码在VC++6.0 及 Dev-C++下编译通过。

算法的输入：先输入点的个数，再输入各个点的名称，再输入每条边的起点和终点。如果在输入边时起点和终点都输入@，则输入结束。





#include "stdio.h"
#include "stdlib.h"
#include &lt;queue&gt;
using namespace std;

#define MAX_VERTE.]]></description><category></category></item><item><title><![CDATA[数据结构：图的邻接表存储与深度优先搜索  完整代码]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/109362082</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/109362082</guid><author>xifengcode</author><pubDate>Thu, 29 Oct 2020 16:02:42 +0800</pubDate><description><![CDATA[图的搜索是数据结构课程非常重要的内容。以下代码的存储结构定义、深度优先搜索等算法主要来自于严蔚敏老师的数据结构教材。以下代码在VC++6.0 及 Dev-C++下编译通过。

算法的输入：先输入点的个数，再输入各个点的名称，再输入每条边的起点和终点。如果在输入边时起点和终点都输入-1，则输入结束。




#include "stdio.h"
#include "stdlib.h"

typedef struct ArcNode  
{
	int adjvex;
	struct ArcNode *nexta]]></description><category></category></item><item><title><![CDATA[数据结构：线索二叉树的创建与遍历 完整代码]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/109239993</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/109239993</guid><author>xifengcode</author><pubDate>Fri, 23 Oct 2020 12:12:17 +0800</pubDate><description><![CDATA[InThreading()、InOrderThreading()、InOrderTraverse_Thr()等几个函数来自于严蔚敏老师的数据结构教材，本人编写了main()函数，在VC++6.0和DEV-C++下编译通过。


#include "stdio.h"
#include "malloc.h"
typedef struct BiThrNode 
{
	char data;
	struct BiThrNode *lchild, *rchild;  // 左右指针
	int LTag, RTag; /]]></description><category></category></item><item><title><![CDATA[数据结构：多维数组的编程实现]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/108923783</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/108923783</guid><author>xifengcode</author><pubDate>Sun, 04 Oct 2020 23:02:24 +0800</pubDate><description><![CDATA[下面给出了多维数组的完整程序。该程序在VC++ 6.0和Dev-C++下编译通过。代码主要参考了严蔚敏老师的教材，本人完成了main函数的编写。注意在Assign和Value两个函数中多定义了一个参数temp用于占位，没有实际用途。如果没有temp这个参数，在VC++6.0下结果不正确。


#include "stdio.h"
#include "stdlib.h"  
#include"stdarg.h "
#define ERROR 0
#define  MAX_ARRAY_DIM   8      ]]></description><category></category></item><item><title><![CDATA[数据结构 循环队列的实现与应用举例：报数问题]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/108750315</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/108750315</guid><author>xifengcode</author><pubDate>Wed, 23 Sep 2020 12:22:32 +0800</pubDate><description><![CDATA[循环队列是一种常见的队列实现方式，各个数据元素依次存储，并设置两个指针，分别指向队头和队尾，在插入和删除数据时，队头指针和队尾指针会循环使用存储空间。应用队列可以解决报数问题。

报数问题：设有n个人站成一排，从左向右的编号分别为1～n, 现在从左向右报数“1，2，1，2，1，2….”,数到”1”的人出列，数到”2”的人站到队伍最右边。报数过程反复进行，直到n个人都出列为止。

分析：可以创建一个队列存储各个数据。左边相当于队头，右边相当于队尾。左边的人报数相当于从队列中取出队头元素并删除队头元素。站到队伍]]></description><category></category></item><item><title><![CDATA[数据结构  链式队列的实现与应用举例：报数问题]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/108742441</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/108742441</guid><author>xifengcode</author><pubDate>Tue, 22 Sep 2020 22:18:00 +0800</pubDate><description><![CDATA[链式队列是一种常见的队列实现方式，通过链表存储队列的各个数据元素，并设置两个指针，分别指向队头和队尾。应用队列可以解决报数问题。

报数问题：设有n个人站成一排，从左向右的编号分别为1～n, 现在从左向右报数“1，2，1，2，1，2….”,数到”1”的人出列，数到”2”的人站到队伍最右边。报数过程反复进行，直到n个人都出列为止。

分析：可以创建一个队列存储各个数据。左边相当于队头，右边相当于队尾。左边的人报数相当于从队列中取出队头元素并删除队头元素。站到队伍的最右边相当于在队尾插入一个数据。为实现1，2，]]></description><category></category></item><item><title><![CDATA[数据结构：双向循环链表的实现]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/108686720</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/108686720</guid><author>xifengcode</author><pubDate>Sat, 19 Sep 2020 22:18:14 +0800</pubDate><description><![CDATA[以下代码为双向循环链表的实现，在vc++ 6.0 和 Dev-C++ 下编译通过。代码总体上来自于教材，做了少量修改。


#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt;
#include&lt;math.h&gt;
 
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
 
typedef int Status;
typedef int Bool]]></description><category></category></item><item><title><![CDATA[数据结构第3章：数制转换的完整代码]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/108674538</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/108674538</guid><author>xifengcode</author><pubDate>Fri, 18 Sep 2020 23:12:19 +0800</pubDate><description><![CDATA[此代码在VC++ 6.0 及Dev-C++下编译通过。


#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
#define  STACK_INIT_SIZE  100
#define  STACKINCREMENT   10
typedef struct 
{
	int  *base;
	int  *top;
	int  stacksize;    
}SqStack;

int InitStack(SqStack &amp;S)
{
	]]></description><category></category></item><item><title><![CDATA[数据结构：一元多项式表示及相加的完整代码]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/108640055</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/108640055</guid><author>xifengcode</author><pubDate>Thu, 17 Sep 2020 12:47:47 +0800</pubDate><description><![CDATA[一元多项式表示及相加的完整代码是一个链表应用的例子。下面给出了完整的代码，在VC++ 6.0以及 Dev-C++ 下编译通过。

测试数据：

A多项式输入：

7 0

3 1

9 8

5 17

0 0

B多项式输入：

8 1

22 7

-9 8

0 0

输出：




#include "stdio.h"
#include "malloc.h"
#include "math.h"
typedef struct LNode
{
	float	coef;
	int	exp;
	struct]]></description><category></category></item><item><title><![CDATA[for循环，可以有多强大？(复杂for循环的例子)]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/105085537</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/105085537</guid><author>xifengcode</author><pubDate>Wed, 25 Mar 2020 00:35:36 +0800</pubDate><description><![CDATA[博文网址：

在C或C++语言中，for循环是一个比较基本的语句。下面的例子展示了一个for循环可以有多强大。

题目：假设有五个整数，并且规定加减乘除各使用一次，编程序找到一个算术表达式，它的运算结果正好是24。假设加减乘除的算符优先级都是相等的，按从左到右的次序计算。

这个题目，是不是要写很多行代码呢？其实不用，一个for循环就够用了。下面给出了程序代码。注意：这个程序甚至没有使用if.........]]></description><category></category></item><item><title><![CDATA[n个数之间的大于等于有多少种可能]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/83352600</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/83352600</guid><author>xifengcode</author><pubDate>Wed, 24 Oct 2018 23:15:38 +0800</pubDate><description><![CDATA[题目：

a,b两个数之间，用＞号和=号表示关系，共有三种可能：a&amp;gt;b  a=b  b&amp;gt;a。

a,b,c三个数之间，用＞号和=号表示关系，共有13种可能：

a=b=c   a=b&amp;gt;c   c&amp;gt;a=b    a=c&amp;gt;b     b&amp;gt;a=c    a&amp;gt;b=c

b=c&amp;gt;a    a&amp;gt;b&amp;gt;c   a&amp;gt;c&amp;gt;b    b&amp;gt;a&amp;]]></description><category></category></item><item><title><![CDATA[递归调用的深度与栈的大小]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/83352536</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/83352536</guid><author>xifengcode</author><pubDate>Wed, 24 Oct 2018 23:06:56 +0800</pubDate><description><![CDATA[函数在递归调用时会占用栈的空间，因此，当递归达到一定的深度时，就会出现栈溢出的情况。
下面的代码，函数的参数值为多少，就进行了多少次递归。这个程序直接运行，得不得最终的结果：2000000，
因为栈没有那么大。


#include &quot;stdio.h&quot;
int fun(int n)
{
if(n==1)
return 1;
return fun(n-1)+1;
}
int main()
{
int...]]></description><category></category></item><item><title><![CDATA[计算系数  (vijos P1739)]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/83352486</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/83352486</guid><author>xifengcode</author><pubDate>Wed, 24 Oct 2018 23:01:45 +0800</pubDate><description><![CDATA[给定一个多项式(ax + by)^k，请求出多项式展开后x^n * y^m项的系数。

格式

输入格式

共一行，包含5个整数，分别为a，b，k，n，m，每两个整数之间用一个空格隔开。输出格式

输出共1行，包含一个整数，表示所求的系数，这个系数可能很大，**输出对10007取模后的结果**。

样例1

样例输入1

1 1 3 1 2

样例输出1

3

限制

1s

 

提示

对于...]]></description><category></category></item><item><title><![CDATA[矩形  (P1191)]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/83352425</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/83352425</guid><author>xifengcode</author><pubDate>Wed, 24 Oct 2018 22:56:29 +0800</pubDate><description><![CDATA[题目描述
给出一个n×n的矩阵，矩阵中，有些格子被染成白色，有些格子被染成黑色，现要求矩阵中白色矩形的数量

输入输出格式
输入格式：
第一行，一个整数n，表示矩形的大小。

接下来n行，每行n个字符，这些字符为“W”或“B”。其中“W”表示白格，“B”表示黑格。

输出格式：
一个正整数，为白色矩形数量

输入样例：
4
WWBW
BBWB
WBWW
WBWB

输出：
15
 


#incl...]]></description><category></category></item><item><title><![CDATA[回文数  (luogu P1015)]]></title><link>https://blog.youkuaiyun.com/xifengcode/article/details/83352261</link><guid>https://blog.youkuaiyun.com/xifengcode/article/details/83352261</guid><author>xifengcode</author><pubDate>Wed, 24 Oct 2018 22:43:17 +0800</pubDate><description><![CDATA[题目描述

若一个数（首位不为零）从左向右读与从右向左读都一样，我们就将其称之为回文数。

例如：给定一个10进制数56，将56加65（即把56从右向左读），得到121是一个回文数。

又如：对于10进制数87：

STEP1：87+78 = 165 STEP2：165+561 = 726

STEP3：726+627 = 1353 STEP4：1353+3531 = 4884

在这里的一步是指...]]></description><category></category></item></channel></rss>