随笔分类 - C
摘要:几个常用的排序算法:插入排序、快速排序、归并排序#include #include #include /************************************************ * 插入排序法 * 第1次循环: 5, 3, 4, 6, 2, 1 -> 5, 5, 4, 6...
阅读全文
摘要: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字符贪吃蛇,源码:#include #include #define WIDTH 12 // 宽#define HEIGHT 8 // 高#define DEBUG 0const char FENCE ='*'; // 栅栏const char HEAD ...
阅读全文