算法与数据结构练习
文章平均质量分 55
大大da怪i
漫无目的
展开
-
己知一棵有 2011 个结点的树,其叶结点个数为 116,该树对应的二叉树无右孩子的结点个数是
树转二叉树的规则:每个结点左指针指向它的第一个孩子,右指针指向它在树中相邻的右兄弟,即“左孩子右兄弟“。拓展:树中一个叶子节点在转化为二叉树的时候,如果它有右兄弟,那么它右指针会指向其兄弟节点,此时该叶子节点不再是叶子节点;如果他没有兄弟节点,转化后仍然是叶子节点。(即不论哪种情况,该节点都没有左孩子。树转化成二叉树的画法:①在兄弟结点之间加一连线;②对每个结点,只保留它与第一个孩子的连线,而抹掉与其他孩子的连线;③以树根为轴心,顺时针旋转45°。原创 2023-10-24 19:31:33 · 304 阅读 · 0 评论 -
线性表元素的区间删除(一步步带你思考解答)
给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。函数接口定义:List Delete( List L, ElementType minD, ElementType maxD );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Posit原创 2021-05-14 23:17:25 · 1777 阅读 · 1 评论 -
自测-3 数组元素循环右移问题(一遍懂,两种方法)
一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯A**N−1)变换为(A**N−M⋯A**N−1A0A1⋯A**N−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。输出格式:在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不原创 2021-02-05 22:24:48 · 1636 阅读 · 0 评论 -
7-52、两个有序链表序列的交集
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 2 5 -12 4 5 8 10 -1输出样例:2 5一开始用Java写了两遍,都无法全部通过,最后一个样例不是运行超时就是内存超限,有用Java通过的小伙伴原创 2021-02-02 20:49:06 · 491 阅读 · 1 评论 -
6-7 在一个数组中实现两个堆栈 (20分)
本题要求在一个数组中实现两个堆栈。函数接口定义:Stack CreateStack( int MaxSize );bool Push( Stack S, ElementType X, int Tag );ElementType Pop( Stack S, int Tag );其中Tag是堆栈编号,取1或2;MaxSize堆栈数组的规模;Stack结构定义如下:typedef int Position;struct SNode { ElementType *Data; Posi原创 2021-02-01 21:05:36 · 134 阅读 · 1 评论 -
(两种方法)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素
为了方便描述过程,假定一个线性表结构体ArrayListtypedef struct ArrayList{ int data[N]; int index;//初始值为-1,代表里面没有元素,使用时代表下标。}*List;第一种方法:顺序双指针法指针i控制向后遍历,指针j记录需要交换的位置。、1、进入循环,当遇到item元素时,不做任何处理,否则将指针i指向的值赋予指针j的位置,且指针j右移2、循环终止,最终将线性表的index等于j-1的位置。(最后一步的index位置,看i原创 2021-01-31 23:15:59 · 12504 阅读 · 6 评论 -
PTA 6-1 单链表逆转 (20分) 三种解法
PTA 6-1 单链表逆转 (20分) 三种解法本题要求实现一个函数,将给定的单链表逆转。函数接口定义:List Reverse( List L );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */原创 2021-01-08 22:06:29 · 1121 阅读 · 1 评论 -
6-8 求二叉树高度(数据结构与算法题目集(中文)PTA)
6-8求二叉树高度 (递归与非递归)本题要求给定二叉树的高度。函数接口定义:int GetHeight( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left;...原创 2020-04-09 20:56:00 · 952 阅读 · 0 评论 -
PTA 数据结构习题 7-2 符号配对 (20分)
题目请编写程序检查C语言源程序中下列符号是否配对:/* 与 */、( 与 )、[ 与 ]、{ 与 }。输入格式:输入为一个C语言源程序。当读到某一行中只有一个句点和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。输出格式:首先,如果所有符号配对正确,则在第一行中输出,否则输出。然后在第二行中指出第一个不配对的符号(注意点):如果缺少左符号,则输出;如果缺少右符号...原创 2020-03-17 17:09:34 · 10406 阅读 · 3 评论