<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[muzir_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/muzir_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; muzir_]]></copyright><item><title><![CDATA[6-2 邻接表存储图的广度优先遍历 (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123127291</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123127291</guid><author>muzir_</author><pubDate>Fri, 25 Feb 2022 10:24:36 +0800</pubDate><description><![CDATA[6-2 邻接表存储图的广度优先遍历 (20 分)
试实现邻接表存储图的广度优先遍历。
函数接口定义：
void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) );
其中LGraph是邻接表存储的图，定义如下：
/* 邻接点的定义 */
typedef struct AdjVNode PtrToAdjVNode;
struct AdjVNode{
Vertex AdjV;        / 邻接点下标 /
PtrToAdjVNode Next; / 指]]></description><category></category></item><item><title><![CDATA[6-1 邻接矩阵存储图的深度优先遍历 (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123127270</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123127270</guid><author>muzir_</author><pubDate>Fri, 25 Feb 2022 10:23:30 +0800</pubDate><description><![CDATA[6-1 邻接矩阵存储图的深度优先遍历 (20 分)
试实现邻接矩阵存储图的深度优先遍历。
函数接口定义：
void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) );
其中MGraph是邻接矩阵存储的图，定义如下：
typedef struct GNode PtrToGNode;
struct GNode{
int Nv;  / 顶点数 /
int Ne;  / 边数   /
WeightType G[MaxVertexNum][MaxVertexNu]]></description><category></category></item><item><title><![CDATA[4-15 根据后序和中序遍历输出先序遍历 (15 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123127251</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123127251</guid><author>muzir_</author><pubDate>Fri, 25 Feb 2022 10:22:45 +0800</pubDate><description><![CDATA[4-15 根据后序和中序遍历输出先序遍历 (15 分)
本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果，输出该树的先序遍历结果。
输入格式:
第一行给出正整数N(≤30)，是树中结点的个数。随后两行，每行给出N个整数，分别对应后序遍历和中序遍历结果，数字间以空格分隔。题目保证输入正确对应一棵二叉树。
输出格式:
在一行中输出Preorder: 以及该树的先序遍历结果。数字间有1个空格，行末不得有多余空格。
输入样例:
7
2 3 1 5 7 6 4
1 2 3 4 5 6 7
结尾无空行
输出样例:
]]></description><category></category></item><item><title><![CDATA[4-14 还原二叉树 (15 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123127231</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123127231</guid><author>muzir_</author><pubDate>Fri, 25 Feb 2022 10:22:06 +0800</pubDate><description><![CDATA[4-14 还原二叉树 (15 分)
给定一棵二叉树的先序遍历序列和中序遍历序列，要求计算该二叉树的高度。
输入格式:
输入首先给出正整数N（≤50），为树中结点总数。下面两行先后给出先序和中序遍历序列，均是长度为N的不包含重复英文字母（区别大小写）的字符串。
输出格式:
输出为一个整数，即该二叉树的高度。
输入样例:
9
ABDFGHIEC
FDHGIBEAC
结尾无空行
输出样例:
5
我用的书上的方法写的错误代码
#include&lt;stdio.h&gt;
typedef char datatype]]></description><category></category></item><item><title><![CDATA[4-13 先序输出叶结点 (10 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123127198</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123127198</guid><author>muzir_</author><pubDate>Fri, 25 Feb 2022 10:21:04 +0800</pubDate><description><![CDATA[4-13 先序输出叶结点 (10 分)
本题要求按照先序遍历的顺序输出给定二叉树的叶结点。
函数接口定义：
void PreorderPrintLeaves( BinTree BT );
其中BinTree结构定义如下：
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
函数PreorderPrintLeaves应按]]></description><category></category></item><item><title><![CDATA[4-12 求二叉树高度 (10 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123127174</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123127174</guid><author>muzir_</author><pubDate>Fri, 25 Feb 2022 10:20:28 +0800</pubDate><description><![CDATA[4-12 求二叉树高度 (10 分)
本题要求给定二叉树的高度。
函数接口定义：
int GetHeight( BinTree BT );
其中BinTree结构定义如下：
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
要求函数返回给定二叉树BT的高度值。
裁判测试程序样例：
#include &lt;stdio]]></description><category></category></item><item><title><![CDATA[4-11 Isomorphic (10 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123127134</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123127134</guid><author>muzir_</author><pubDate>Fri, 25 Feb 2022 10:19:48 +0800</pubDate><description><![CDATA[4-11 Isomorphic (10 分)
Two trees, T1 and T2, are isomorphic if T1 can be transformed into T2 by swapping left and right children of (some of the) nodes in T1. For instance, the two trees in Figure 1 are isomorphic because they are the same if the children ]]></description><category></category></item><item><title><![CDATA[是否是同一棵二叉搜索树]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123127112</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123127112</guid><author>muzir_</author><pubDate>Fri, 25 Feb 2022 10:19:03 +0800</pubDate><description><![CDATA[求解思路
1.分别建两棵搜索树
根据两个序列分别建树，再判别树是否一样
2.不建树的判别方法
3 1 4 2 vs 3 4 1 2
（1 2 ）3 （4）  （1 2 ）3 （4）
根据根找到比他小的比他大的，再比较
3.建一棵树，再判别其他序列是否与该树一致
一、搜索树表示
typedef struct TreeNode*Tree；
struct TreeNode{
int v;
Tree Left,RIght;
int flag;//j结点有没有被访问过的标志
};
二、程序框架
int main（）.]]></description><category></category></item><item><title><![CDATA[第一次月考R7-1 两个有序链表序列的合并 (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123127089</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123127089</guid><author>muzir_</author><pubDate>Fri, 25 Feb 2022 10:18:03 +0800</pubDate><description><![CDATA[R7-1 两个有序链表序列的合并 (20 分)
已知两个非降序链表序列S1与S2，设计函数构造出S1与S2合并后的新的非降序链表S3。
输入格式:
输入分两行，分别在每行给出由若干个正整数构成的非降序序列，用−1表示序列的结尾（−1不属于这个序列）。数字用空格间隔。
输出格式:
在一行中输出合并后新的非降序链表，数字间用空格分开，结尾不能有多余空格；若新链表为空，输出NULL。
输入样例:
1 3 5 -1
2 4 6 8 10 -1
结尾无空行
输出样例:
1 2 3 4 5 6 8 10
这道题和之前做]]></description><category></category></item><item><title><![CDATA[3-10 串的模式匹配 (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123040926</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123040926</guid><author>muzir_</author><pubDate>Mon, 21 Feb 2022 09:50:57 +0800</pubDate><description><![CDATA[3-10 串的模式匹配 (20 分)
给定两个由英文字母组成的字符串 String 和 Pattern，要求找到 Pattern 在 String 中第一次出现的位置，并将此位置后的 String 的子串输出。如果找不到，则输出“Not Found”。
本题旨在测试各种不同的匹配算法在各种数据情况下的表现。各组测试数据特点如下：
数据0：小规模字符串，测试基本正确性；
数据1：随机数据，String 长度为 10
5
，Pattern 长度为 10；
数据2：随机数据，String 长度为 10
5
，Pa]]></description><category></category></item><item><title><![CDATA[3-9 堆栈模拟队列 (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123040910</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123040910</guid><author>muzir_</author><pubDate>Mon, 21 Feb 2022 09:50:17 +0800</pubDate><description><![CDATA[3-9 堆栈模拟队列 (20 分)
设已知有两个堆栈S1和S2，请用这两个堆栈模拟出一个队列Q。
所谓用堆栈模拟队列，实际上就是通过调用堆栈的下列操作函数:
int IsFull(Stack S)：判断堆栈S是否已满，返回1或0；
int IsEmpty (Stack S )：判断堆栈S是否为空，返回1或0；
void Push(Stack S, ElementType item )：将元素item压入堆栈S；
ElementType Pop(Stack S )：删除并返回S的栈顶元素。
实现队列的操作，即]]></description><category></category></item><item><title><![CDATA[3-8 求前缀表达式的值 (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123040877</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123040877</guid><author>muzir_</author><pubDate>Mon, 21 Feb 2022 09:48:42 +0800</pubDate><description><![CDATA[3-8 求前缀表达式的值 (20 分)
算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前，例如2+3*(7-4)+8/4的前缀表达式是：+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。
输入格式:
输入在一行内给出不超过30个字符的前缀表达式，只包含+、-、*、/以及运算数，不同对象（运算数、运算符号）之间以空格分隔。
输出格式:
输出前缀表达式的运算结果，保留小数点后1位，或错误信息ERROR。
输入样例:



2 * 3 - ]]></description><category></category></item><item><title><![CDATA[3-7 表达式转换 (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123040823</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123040823</guid><author>muzir_</author><pubDate>Mon, 21 Feb 2022 09:46:02 +0800</pubDate><description><![CDATA[3-7 表达式转换 (20 分)
算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法，即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。
输入格式:
输入在一行中给出不含空格的中缀表达式，可包含+、-、*、\以及左右括号()，表达式不超过20个字符。
输出格式:
在一行中输出转换后的后缀表达式，要求不同对象（运算数、运算符号）之间以空格分隔，但结尾不得有多余空格。
输入样例:
2+3*(7-4)+8/4
结尾无空行
输出样例:
2 3 7 4 -]]></description><category></category></item><item><title><![CDATA[3-6 银行业务队列简单模拟 (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123040754</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123040754</guid><author>muzir_</author><pubDate>Mon, 21 Feb 2022 09:44:20 +0800</pubDate><description><![CDATA[3-6 银行业务队列简单模拟 (20 分)
设某银行有A、B两个业务窗口，且处理业务的速度不一样，其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时，B窗口处理完1个顾客。给定到达银行的顾客序列，请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔，并且当不同窗口同时处理完2个顾客时，A窗口顾客优先输出。
输入格式:
输入为一行正整数，其中第1个数字N(≤1000)为顾客总数，后面跟着N位顾客的编号。编号为奇数的顾客需要到A窗口办理业务，为偶数的顾客则去B窗口。数字间以空格分隔]]></description><category></category></item><item><title><![CDATA[3-5 单链表分段逆转 (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123040740</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123040740</guid><author>muzir_</author><pubDate>Mon, 21 Feb 2022 09:42:48 +0800</pubDate><description><![CDATA[3-5 单链表分段逆转 (20 分)
给定一个带头结点的单链表和一个整数K，要求你将链表中的每K个结点做一次逆转。例如给定单链表 1→2→3→4→5→6 和 K=3，你需要将链表改造成 3→2→1→6→5→4；如果 K=4，则应该得到 4→3→2→1→5→6。
函数接口定义：
void K_Reverse( List L, int K );
其中List结构定义如下：
typedef struct Node PtrToNode;
struct Node {
ElementType Data; / 存储结点数]]></description><category></category></item><item><title><![CDATA[3-4 双端队列 (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123040700</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123040700</guid><author>muzir_</author><pubDate>Mon, 21 Feb 2022 09:41:48 +0800</pubDate><description><![CDATA[3-4 双端队列 (20 分)
双端队列（deque，即double-ended queue的缩写）是一种具有队列和栈性质的数据结构，即可以（也只能）在线性表的两端进行插入和删除。若以顺序存储方式实现双端队列，请编写例程实现下列操作：
Push(X,D)：将元素X插入到双端队列D的头；
Pop(D)：删除双端队列D的头元素，并返回；
Inject(X,D)：将元素X插入到双端队列D的尾部；
Eject(D)：删除双端队列D的尾部元素，并返回。
函数接口定义：
bool Push( ElementType X]]></description><category></category></item><item><title><![CDATA[3-3 另类循环队列 (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123040685</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123040685</guid><author>muzir_</author><pubDate>Mon, 21 Feb 2022 09:40:49 +0800</pubDate><description><![CDATA[3-3 另类循环队列 (20 分)
如果用一个循环数组表示队列，并且只设队列头指针Front，不设尾指针Rear，而是另设Count记录队列中元素个数。请编写算法实现队列的入队和出队操作。
函数接口定义：
bool AddQ( Queue Q, ElementType X );
ElementType DeleteQ( Queue Q );
其中Queue结构定义如下：
typedef int Position;
typedef struct QNode *PtrToQNode;
struct QNode ]]></description><category></category></item><item><title><![CDATA[3-2 数组元素的区间删除 (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123040658</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123040658</guid><author>muzir_</author><pubDate>Mon, 21 Feb 2022 09:39:49 +0800</pubDate><description><![CDATA[3-2 数组元素的区间删除 (20 分)
给定一个顺序存储的线性表，请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储，并且相对位置不能改变。
函数接口定义：
int Delete( int A[], int L, int minA, int maxA );
其中A是整型数组，存储原始线性表的元素；L是表长，即A中元素的个数；minA和maxA分别为待删除元素的值域的下、上界。函数Delete应将A中所有值大于minA而且小于maxA的元素删除，同时保证表中剩余元素保持顺]]></description><category></category></item><item><title><![CDATA[3-1 Deque (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/123040624</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/123040624</guid><author>muzir_</author><pubDate>Mon, 21 Feb 2022 09:38:41 +0800</pubDate><description><![CDATA[3-1 Deque (20 分)
A “deque” is a data structure consisting of a list of items, on which the following operations are possible:
Push(X,D): Insert item X on the front end of deque D.
Pop(D): Remove the front item from deque D and return it.
Inject(X,D): Inser]]></description><category></category></item><item><title><![CDATA[2-10 出栈序列的合法性 (20 分)]]></title><link>https://blog.youkuaiyun.com/muzir_/article/details/121578839</link><guid>https://blog.youkuaiyun.com/muzir_/article/details/121578839</guid><author>muzir_</author><pubDate>Sat, 27 Nov 2021 16:06:35 +0800</pubDate><description><![CDATA[2-10 出栈序列的合法性 (20 分)
给定一个最大容量为 M 的堆栈，将 N 个数字按 1, 2, 3, …, N 的顺序入栈，允许按任何顺序出栈，则哪些数字序列是不可能得到的？例如给定 M=5、N=7，则我们有可能得到{ 1, 2, 3, 4, 5, 6, 7 }，但不可能得到{ 3, 2, 1, 7, 5, 6, 4 }。
输入格式：
输入第一行给出 3 个不超过 1000 的正整数：M（堆栈最大容量）、N（入栈元素个数）、K（待检查的出栈序列个数）。最后 K 行，每行给出 N 个数字的出栈序列。所]]></description><category></category></item></channel></rss>