自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 6-2 邻接表存储图的广度优先遍历 (20 分)

6-2 邻接表存储图的广度优先遍历 (20 分)试实现邻接表存储图的广度优先遍历。函数接口定义:void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) );其中LGraph是邻接表存储的图,定义如下:/* 邻接点的定义 */typedef struct AdjVNode PtrToAdjVNode;struct AdjVNode{Vertex AdjV; / 邻接点下标 /PtrToAdjVNode Next; / 指

2022-02-25 10:24:36 2272

原创 6-1 邻接矩阵存储图的深度优先遍历 (20 分)

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

2022-02-25 10:23:30 3068

原创 4-15 根据后序和中序遍历输出先序遍历 (15 分)

4-15 根据后序和中序遍历输出先序遍历 (15 分)本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。输入格式:第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。输出格式:在一行中输出Preorder: 以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7结尾无空行输出样例:

2022-02-25 10:22:45 533

原创 4-14 还原二叉树 (15 分)

4-14 还原二叉树 (15 分)给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。输入样例:9ABDFGHIECFDHGIBEAC结尾无空行输出样例:5我用的书上的方法写的错误代码#include<stdio.h>typedef char datatype

2022-02-25 10:22:06 160

原创 4-13 先序输出叶结点 (10 分)

4-13 先序输出叶结点 (10 分)本题要求按照先序遍历的顺序输出给定二叉树的叶结点。函数接口定义:void PreorderPrintLeaves( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ElementType Data;BinTree Left;BinTree Right;};函数PreorderPrintLeaves应按

2022-02-25 10:21:04 79

原创 4-12 求二叉树高度 (10 分)

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 <stdio

2022-02-25 10:20:28 60

原创 4-11 Isomorphic (10 分)

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

2022-02-25 10:19:48 790

原创 是否是同一棵二叉搜索树

求解思路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().

2022-02-25 10:19:03 456

原创 第一次月考R7-1 两个有序链表序列的合并 (20 分)

R7-1 两个有序链表序列的合并 (20 分)已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 3 5 -12 4 6 8 10 -1结尾无空行输出样例:1 2 3 4 5 6 8 10这道题和之前做

2022-02-25 10:18:03 1139 1

原创 3-10 串的模式匹配 (20 分)

3-10 串的模式匹配 (20 分)给定两个由英文字母组成的字符串 String 和 Pattern,要求找到 Pattern 在 String 中第一次出现的位置,并将此位置后的 String 的子串输出。如果找不到,则输出“Not Found”。本题旨在测试各种不同的匹配算法在各种数据情况下的表现。各组测试数据特点如下:数据0:小规模字符串,测试基本正确性;数据1:随机数据,String 长度为 105,Pattern 长度为 10;数据2:随机数据,String 长度为 105,Pa

2022-02-21 09:50:57 156

原创 3-9 堆栈模拟队列 (20 分)

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的栈顶元素。实现队列的操作,即

2022-02-21 09:50:17 182

原创 3-8 求前缀表达式的值 (20 分)

3-8 求前缀表达式的值 (20 分)算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。输入格式:输入在一行内给出不超过30个字符的前缀表达式,只包含+、-、*、/以及运算数,不同对象(运算数、运算符号)之间以空格分隔。输出格式:输出前缀表达式的运算结果,保留小数点后1位,或错误信息ERROR。输入样例:2 * 3 -

2022-02-21 09:48:42 402

原创 3-7 表达式转换 (20 分)

3-7 表达式转换 (20 分)算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。输入格式:输入在一行中给出不含空格的中缀表达式,可包含+、-、*、\以及左右括号(),表达式不超过20个字符。输出格式:在一行中输出转换后的后缀表达式,要求不同对象(运算数、运算符号)之间以空格分隔,但结尾不得有多余空格。输入样例:2+3*(7-4)+8/4结尾无空行输出样例:2 3 7 4 -

2022-02-21 09:46:02 466

原创 3-6 银行业务队列简单模拟 (20 分)

3-6 银行业务队列简单模拟 (20 分)设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。输入格式:输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号。编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口。数字间以空格分隔

2022-02-21 09:44:20 2371

原创 3-5 单链表分段逆转 (20 分)

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; / 存储结点数

2022-02-21 09:42:48 944

原创 3-4 双端队列 (20 分)

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

2022-02-21 09:41:48 359

原创 3-3 另类循环队列 (20 分)

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

2022-02-21 09:40:49 206

原创 3-2 数组元素的区间删除 (20 分)

3-2 数组元素的区间删除 (20 分)给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。函数接口定义:int Delete( int A[], int L, int minA, int maxA );其中A是整型数组,存储原始线性表的元素;L是表长,即A中元素的个数;minA和maxA分别为待删除元素的值域的下、上界。函数Delete应将A中所有值大于minA而且小于maxA的元素删除,同时保证表中剩余元素保持顺

2022-02-21 09:39:49 334

原创 3-1 Deque (20 分)

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

2022-02-21 09:38:41 577

原创 2-10 出栈序列的合法性 (20 分)

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 个数字的出栈序列。所

2021-11-27 16:06:35 1232

原创 2-9 彩虹瓶 (20 分)

2-9 彩虹瓶 (20 分)rb.JPG彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里。假设彩虹瓶里要按顺序装 N 种颜色的小球(不妨将顺序就编号为 1 到 N)。现在工厂里有每种颜色的小球各一箱,工人需要一箱一箱地将小球从工厂里搬到装填场地。如果搬来的这箱小球正好是可以装填的颜色,就直接拆箱装填;如果不是,就把箱子先码放在一个临时货架上,码放的方法就是一箱一箱堆上去。当一种颜色装填完以后,先看看货架顶端的一箱是不是下一个要装填的

2021-11-27 16:04:55 257

原创 2-8 符号配对 (20 分)

2-8 符号配对 (20 分)请编写程序检查C语言源程序中下列符号是否配对:/与/、(与)、[与]、{与}。输入格式:输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。输出格式:首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则输出左符号-?。输入样例1:void test(){int i, A[10];fo

2021-11-27 16:03:49 486

原创 2-7 一元多项式求导 (20 分)

2-7 一元多项式求导 (20 分)设计函数求一元多项式的导数。输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。输入样例:3 4 -5 2 6 1 -2 0结尾无空行输出样例:12 3 -10 1 6 0好难好难,终于写出来了,这道题我一开始的思路就是设置一个结构体链表存储数据,首先就采用尾插法插入数据,但是这个输入结束的条件愁了

2021-11-27 16:02:40 393 2

原创 2-6 两个有序序列的中位数 (20 分)

2-6 两个有序序列的中位数 (20 分)已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0​ ,A1​ ,⋯,AN−1​ 的中位数指A(N−1)/2​ 的值,即第⌊(N+1)/2⌋个数(A0​ 为第1个数)。输入格式:输入分三行。第一行给出序列的公共长度N(0<N≤100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数字用空格间隔。输出格式:在一行中输出两个输入序列的并集序列的中位数。输入样例1:51

2021-11-27 16:00:21 242

原创 2-5 Two Stacks In One Array (20 分)

2-5 Two Stacks In One Array (20 分)Write routines to implement two stacks using only one array. Your stack routines should not declare an overflow unless every slot in the array is used.Format of functions:Stack CreateStack( int MaxElements );int IsEmpt

2021-11-27 15:58:45 124

原创 2-4 另类堆栈 (20 分)

2-4 另类堆栈 (20 分)在栈的顺序存储实现中,另有一种方法是将Top定义为栈顶的上一个位置。请编写程序实现这种定义下堆栈的入栈、出栈操作。如何判断堆栈为空或者满?函数接口定义:bool Push( Stack S, ElementType X );ElementType Pop( Stack S );其中Stack结构定义如下:typedef int Position;typedef struct SNode *PtrToSNode;struct SNode {ElementType

2021-11-27 15:57:58 430

原创 2-3 链表拼接 (20 分)

2-3 链表拼接 (20 分)本题要求实现一个合并两个有序链表的简单函数。链表结点定义如下:struct ListNode {int data;struct ListNode *next;};函数接口定义:struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2);其中list1和list2是用户传入的两个按data升序链接的链表的头指针;函数mergelists将两个链表合并成一个按data升序链接

2021-11-27 15:57:13 353

原创 2-2 学生成绩链表处理 (20 分)

2-2 学生成绩链表处理 (20 分)本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。函数接口定义:struct stud_node *createlist();struct stud_node *deletelist( struct stud_node *head, int min_score );函数createlist利用scanf从输入中获取学生的信息,将其组织成单向链表,并返回链表头指针。链表节点结构定义如下:struct st

2021-11-27 15:56:24 279

原创 2-1 Add Two Polynomials (20 分)

2-1 Add Two Polynomials (20 分)Write a function to add two polynomials. Do not destroy the input. Use a linked list implementation with a dummy head node. Note: The zero polynomial is represented by an empty list with only the dummy head node.Format of fu

2021-11-27 15:55:26 254

原创 1-10 链表去重 (20 分)

1-10 链表去重 (20 分)给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤105,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 -1 来表示。随后

2021-11-26 14:19:48 339

原创 1-9 最长连续递增子序列 (20 分)

1-9 最长连续递增子序列 (20 分)给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。输入格式:输入第1行给出正整数n(≤105);第2行给出n个整数,其间以空格分隔。输出格式:在一行中输出第一次出现的最长连续递增子序列,数字之间用空格分隔,序列结尾不能有多余空格。输入样例:151 9 2 5 7 3 4 6 8 0 11 15 17 17 10结尾无空行输出样例:

2021-11-26 14:18:53 768

原创 1-8 数组循环左移 (20 分)

1-8 数组循环左移 (20 分)本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0​ a1​ ⋯an−1​ )变换为(am​ ⋯an−1​ a0​ a1​ ⋯am−1​ )(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:输入第1行给出正整数n(≤100)和整数m

2021-11-26 14:18:09 208

原创 1-7 两个有序链表序列的交集 (20 分)

1-7 两个有序链表序列的交集 (20 分)已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 2 5 -12 4 5 8 10 -1结尾无空行输出样例:2 5这道题注意是有序链表,所以要找两个表中相等的元素就

2021-11-26 14:17:12 802

原创 1-6 求链式线性表的倒数第K项 (20 分)

1-6 求链式线性表的倒数第K项 (20 分)给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。输入格式:输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。输出格式:输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。输入样例:4 1 2 3 4 5 6 7 8 9 0 -1结尾无空行输出样例:7第一种方法,有一个小错误但还没找到,主要思路就是先把输入的元素输入到链表中,再用count得到它

2021-11-26 14:16:29 598

原创 1-5 线性表元素的区间删除 (20 分)

1-5 线性表元素的区间删除 (20 分)给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。函数接口定义:List Delete( List L, ElementType minD, ElementType maxD );其中List结构定义如下:typedef int Position;typedef struct LNode List;struct LNode {ElementType Data[MAX

2021-11-26 14:15:39 193

原创 1-4 数组元素的区间删除 (20 分)

1-4 数组元素的区间删除 (20 分)给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。函数接口定义:int Delete( int A[], int L, int minA, int maxA );其中A是整型数组,存储原始线性表的元素;L是表长,即A中元素的个数;minA和maxA分别为待删除元素的值域的下、上界。函数Delete应将A中所有值大于minA而且小于maxA的元素删除,同时保证表中剩余元素保持顺

2021-11-26 14:14:27 126

原创 1-3 递增的整数序列链表的插入 (20 分)

1-3 递增的整数序列链表的插入 (20 分)本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。函数接口定义:List Insert( List L, ElementType X );其中List结构定义如下:typedef struct Node PtrToNode;struct Node {ElementType Data; / 存储结点数据 /PtrToNode Next; / 指向下一个结点的指针 /};typedef PtrToN

2021-11-26 14:13:03 364

原创 1-2 链表逆置 (20 分)

1-2 链表逆置 (20 分)本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表结点定义如下:struct ListNode {int data;struct ListNode *next;};函数接口定义:struct ListNode *reverse( struct ListNode *head );其中head是用户传入的链表的头指针;函数reverse将链表head逆置,并返回结果链表的头指针。裁判测试程序样例:#include <stdio.h

2021-11-26 14:09:31 224

原创 1-1 顺序表操作集 (20 分)

1-1 顺序表操作集 (20 分)本题要求实现顺序表的操作集。函数接口定义:List MakeEmpty();Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:typedef int Position;typedef struct LNode List;struct LN

2021-11-26 14:07:00 139

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除