随笔分类 - 之前的比赛题目 / 数据结构的学习
学习数据结构
摘要:1 #include<stdio.h> 2 #include<time.h> 3 4 #define X 8 5 #define Y 8 6 7 int chess[X][Y]; 8 9 //查找当前位置的下一个位置 10 int nextxy(int* x, int* y, int count)
阅读全文
摘要:线索二叉树就是让一些浪费的空间利用起来,并且获得效率。 总体思路就是:中序遍历线索化,这样可以让空间利用率最大,建立一个指针p始终指向头结点,还有一个指针pre(全局变量)指向当前结点的上一个结点,因为要线索化,所以我们得让整棵树串联起来,例如图中的这棵树,中序遍历就是CBDAEF,加红的部分就是该
阅读全文
摘要:二叉搜索树就类似于二分查找,根节点的左边都比根结点小,右边都比根结点大。 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 typedef int TElemType; 5 typedef int ElemType; 6 #define OK 1 7 #def
阅读全文
摘要:1 #include<stdio.h> 2 #include<stdlib.h> 3 4 #define MAXTSIZE 100; //二叉树的最大结点数 5 typedef char TElemType; 6 7 typedef struct BiTNode 8 { 9 TElemType da
阅读全文
摘要:1 做法:第一步随便放一个棋子,然后找安全位置放第二个棋子,然后放好后再找安全地放第三个x棋子,以此类推 2 详细解释:https://www.bilibili.com/video/av76265320?from=search&seid=10595269197283770223 3 #include
阅读全文
摘要://先输入行列,在输入迷宫 以-1 -1 结束 #include<stdio.h> #include<stdlib.h> #define MAXSIZE 100 #define ERROR -1 #define OK 1 struct Direction { int incX; //增量 int i
阅读全文
摘要:算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。 输入在一行内给出不超过30个字符的前缀表达式,只包含+、-、*、/以及运算数,
阅读全文
摘要://队列顺序存储结构 //取模运算:就是取余数,它的值永远不会大于除数 (rear+1)%QueueSize (front+1)%QueueSize //队列的顺序存储结构 #define MAXSIZE 100 typedef struct { ElemType *base; //用于存放内存分配
阅读全文
摘要:1.队列是只允许在一端进行插入 在另一端进行删除的线性表 2.队列先进先出 //队列的链式存储结构(插进去 吐出来) typedef struct QNode { ElemType data; struct QNode *next; }QNode, *QueuePrt; typedef struct
阅读全文
摘要:1 //1.实现对逆波兰输入的表达式进行计算如(2-1)*(2+3)= 5 就输入2 1 - 2 3 + * //先把2 1 压栈 遇到-弹栈 再把2 3压进去 遇到+弹栈 最后遇到*弹栈 2 //2.支持带小数点的数据 3 例: 正常操作 >逆波兰表达式 4 a+b >a b + 5 a+(b-c
阅读全文
摘要:1 链栈通常用单链表表示,由于栈的主要操作是栈顶插入与删除,显然以链表的头部作为栈顶最方便,而且没必要为了操作方便附加一个头结点 2 //链式存储结构(将单链表头指针与栈顶合二为一) 3 typedef struct StackNode 4 { 5 ElemType data; 6 struct S
阅读全文
摘要:1 //将二进制转化为十进制(利用后入先出的特点) 2 //二进制数 1101001 3 /* top 4 1 5 0 6 0 7 1 8 0 9 0 10 1 11 1 base */ 12 13 #include<stdio.h> 14 #include<stdlib.h> 15 #includ
阅读全文
摘要:1.栈的元素必须后进先出 2.栈的操作只能在线性表的表尾进行 3.对于栈,栈的表尾称为栈顶(top),相应的表头称为栈底(bottom)。 栈的插入操作(push)叫进栈,也叫压栈,入栈。 栈的删除操作(Pop),叫出栈,也叫弹栈。 //栈基本操作 //栈的顺序存储结构 #define STACK_
阅读全文
摘要:题目描述: 有黑桃1到13,13张牌,成某种顺序,魔术师可以从1开始数 ,数1,背面朝上的13张牌第一张就是1,然后放到桌面上,然后从1开始数,把第一张放在所有牌下面,数到2,翻开,就是2,再放到桌子上,以此此类推 #include<stdio.h> #include<stdlib.h> #defi
阅读全文
摘要:1 描述:一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。 2 如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王? 3 //用循环
阅读全文
摘要:1 方法一:生成链表 计算节点个数 找到中间 2 方法二:Status GetMidNode(LinkList L, ElemType *e) //用两个指针 快指针是慢指针移动速度的两倍 快指针移动到结尾 则慢指针移动到中央 (这种方法是第一种方法速度三倍) 3 { 4 LinkList sear
阅读全文
摘要:1 //双向链表的结构 2 typedef struct DualNode 3 { 4 Elemtype data; 5 struct DualNode *prior; //前驱结点 6 struct DualNode *next; //后继结点 7 } DualNode,*DuLinkList;
阅读全文
摘要:1 来自https://www.bilibili.com/video/av2975983/?p=17&t=13 2 个人感悟:循环链表的插入与删除与普通链表的区别就是在一个结点 而且初始化功能循环链表的头指向尾则代表空 普通链表头指针指针域指向NULL为空 3 4 //算法描述 5 //链表存储结构
阅读全文
摘要:1 此代码由https://fishc.com.cn/thread-46760-1-1.html转载 2 3 #include<stdio.h> 4 #include<stdlib.h> 5 6 #define OK 1 7 #define ERROR -1 8 #define LEN sizeof
阅读全文