摘要:
AVL是最先发明的自平衡二叉查找树算法。在AVL中任何节点的两个儿子子树的高度最大差别为一,所以它也被称为高度平衡树,n个结点的AVL树最大深度约1.44log2n。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 定义 用LH... 阅读全文
摘要:
最近在LeetCode做题,二叉树出现错误时不好排查,于是自己写了一个函数,将前序遍历格式字串转换成二叉树。 形如 "AB#D##C##" 的字符串,"#"表示孩子节点为空,算法如下: 1.当前节点进栈 push(s,t) 2.出栈: pcur=pop(s) ,判断当前字符 a 不... 阅读全文
摘要:
首先来递归算法,简单易懂:#include #include #include typedef struct TreeNode{ char data; struct TreeNode *lchild, *rchild;}TreeNode;void PreOrderTraverse(T... 阅读全文
摘要:
头指针存放链表元素数量,头节点开始存放数据,尾节点指向NULL list.h#ifndef _LIST_H#define _LIST_H#include #include #define DEBUG 0typedef struct node{ int val; struct nod... 阅读全文
摘要:
两位玩家轮流在棋盘上放置不同颜色的棋子,一位玩家使用黑子,另一位使用白子,棋盘是一个偶数正方形。 只能将一个棋子放在对手的棋子旁边,使对手在水平、垂直、对角线方向上的棋子变成自己的棋子,游戏结束时,棋子多的玩家获胜。 如果所有的方格都放置了棋子,游戏结束;如果无法放置棋子将对方的棋子变成自己... 阅读全文
摘要:
一个很简单的给main函数传递参数的例子:#include //int main(int argc, char *argv[]){int main(int argc, char **argv){ if( 1 == argc) printf("hello world!\n");... 阅读全文
摘要:
之前的贪吃蛇都是在cmd下实现,每次都要调用cls刷新屏幕,简直是闪瞎了我的狗眼。 度娘得知有一种方法可以避免闪烁,即:双缓冲。原理是先在内存中作图,然后将做好的图复制到前台,同时禁止背景刷新。 主要使用函数: LRESULT CALLBACK WndProc (HWND, UINT,... 阅读全文
摘要:
某天闲逛时看见一副动图: 真的是非常贪吃,各种拐弯各种吃,感觉十分有趣。 用Perl来实现自动吃满,蓄谋已久,之前的字符贪吃蛇、深度优先算法、A*算法,都是为此篇做铺垫。 那么,怎样让蛇不吃到自己呢? 1、让蛇按照我们设计好的路线行进,在一个N*M(N、M均为偶数,奇数不讨论... 阅读全文
摘要:
A*算法;A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法。估价值与实际值越接近,估价函数取得就越好。 公式表示为: f(n)=g(n)+h(n),其中 f(n) 是从初始点经由节点n到目标点的估价函数,g(n) 是在状态空间中从初始节点到n节点的实际代价,h(n) 是... 阅读全文
摘要:
算法参照Perl字符贪吃蛇,源码:#include #include #define WIDTH 12 // 宽#define HEIGHT 8 // 高#define DEBUG 0const char FENCE ='*'; // 栅栏const char HEAD ... 阅读全文