
c/c++
szfhy
这个作者很懒,什么都没留下…
展开
-
将二进制字符串转换为二进制数据
例如将字符串“01000001”转为0x41, 如果字符串不是8的整数倍,二进制地位补0。#include #include void str_bin_to_u8(const char *str, int len, unsigned char *data){ int i = 0; unsigned char and_bit[] = {0x7F, 0xBF, 0xDF, 0xEF, 0x原创 2015-11-07 11:34:22 · 9547 阅读 · 0 评论 -
内部排序-插入排序-二叉树排序法
思想主要是:利用要排序的数据构造二叉树,然后再中序遍历二叉树即可。方法简单,但是简历的二叉树歪斜程度较大。时间复杂度O(nlogn), 受树的高度影响。空间复杂度为O(n), 比较耗费空间。#include "stdafx.h"#include void binary_tree(int *btree, int *list, int len){ int i; in原创 2015-11-26 21:43:55 · 902 阅读 · 1 评论 -
内部排序-堆排序
堆排序方法主要是循环的将要排序的数据构造成堆,然后将堆顶输出循环利用上述方法,将剩下的数据继续构造成堆。该方法的时间复杂度为nlogn. 空间复杂度为O(1);#include void dump_heap(int *list, int len){ int i = 0; for (i = 1; i <= len; i++) printf("%d ",原创 2015-12-15 21:38:26 · 6340 阅读 · 0 评论 -
外部排序-合并排序
定义省略:code:#include void MergeTwo(int *src, int *dst, int left, int middle, int n){ int i, j, k, t; i = left; k = left; j = middle + 1; while ( (i <= middle) && (j <= n) ) { if原创 2015-11-29 17:32:53 · 720 阅读 · 0 评论 -
二叉树建立/遍历/复制/映像/节点删除/释放空间
闲来无事,想起来的当初的二叉树的操作,编码回忆一下;(1)二叉树的建立(2)前序 中序 后序遍历二叉树(3)复制二叉树(4)将二叉树左右对换,简称映像(5)删除二叉树中的节点(6)释放二叉树#include #include struct tree_type{ struct tree_type *left; int data; struct tree_原创 2015-12-20 18:24:10 · 6536 阅读 · 0 评论 -
费氏查找算法
费氏查找算法,利用斐波那契数列的思想,逐步修改要查找的区间。相对于折半查找算法来说,建立斐波那契数列不需要用除法。效率要高。在初始阶段搜索相对较快,但是在后半程收敛比较慢。在考虑是否可以将该方法和其他搜索算法融合一下,得到更快的搜索算法。#include #include int Fib(int n){ if (n <= 1) return 1;原创 2015-12-20 21:10:15 · 6679 阅读 · 0 评论 -
线性插补法查找
利用线性插值的方法找到要比较元素的位置。写段code吧,暂时没有发现这种方法有啥优点。#include #include #include int find_best_mid(int *list, int low, int high, int key){ int gap; int n1, n2, n3; gap = ceil(sqrt((float)high - (原创 2015-12-21 21:05:09 · 8678 阅读 · 0 评论 -
哈希查找
记录个demo吧。建立hash表和search一定要用同一的hash算法。#include #include #define Max 6#define HashMax 5int data[Max] = {12, 160, 219, 522, 725, 9997};int HashTable[HashMax] = {0};int counter = 1;stru原创 2015-12-21 22:50:30 · 6203 阅读 · 0 评论 -
Visual Studio 设置环境变量头文件库文件目录
使用VS做为开发工具,经常使用第三方的lib时,需要经常设置include,lib包含目录,这样比较好管理code.运行时,如何找到这些Lib呢?网上看到的解决方法大部分都是设置系统环境变量,然后重启VS。这个方法也可以解决问题,但不是最好的方法。其实可以在VS中设置环境变量,在环境变量中加入相应的路径就好了,也不用重启,也不用设置系统环境变量。如下图。仔细查看环境变量的写法,...原创 2018-10-29 16:52:41 · 2852 阅读 · 0 评论 -
内部排序-插入排序-希尔排序
直接上code吧#include "stdafx.h"#include #include #include void shell_sort(int *list, int len);int _tmain(int argc, _TCHAR* argv[]){ int list[] = { 3, 87, 4, 3, 5, 65, 88, 92, 1, 32, 11, 44, 36,原创 2015-11-26 17:19:59 · 524 阅读 · 0 评论 -
图转换为树-最小生成树
利用prims和kruskal两种方法实现最小生成树。直接上code吧。记录下#include #include #define MAX 10#define VertexNum 5struct List{ int v1; int v2; int weight; int marked; struct List *next;};typedef struct L原创 2015-12-27 21:47:35 · 10173 阅读 · 0 评论 -
零长度数组解析
接触了linux编程之后,经常会遇到一个很诡异的零长度数组,今天决定深挖一下。Struct command { Int domain; Int length; Char bytes[0];//也可以写成char bytes[];}在某一结构末尾如定义类似 char bytes[0] 的零长度数组,表示该结构不定长,可通过数组的方式进行扩展。结构中必包含一个原创 2015-11-09 19:53:11 · 6727 阅读 · 0 评论 -
C++ typeid 与RTTI(Runtime Type Information)
在c++中,typeid用于获知一个变量的具体类型。它是一个操作符,而不是函数!运行时获知变量类型名称,可以使用 typeid(变量).name。 RTTI 是Runtime Type Information的缩写,它提供了运行时确定对象类型的方法。 贴段code比较容易理解。 #include #include原创 2015-10-30 15:12:43 · 482 阅读 · 0 评论 -
struct 位域
//直接上code吧位域的作用就是像操作变量一样来操作bit位,常用于嵌入式编程中,来达到较少存储空间使用的目的。#include #include int main(void){ struct bs { unsigned char a: 1; unsigned char b: 3; unsigned char c: 4; unsigned char d: 1;原创 2015-11-24 10:12:23 · 6466 阅读 · 0 评论 -
走进结构体存储--位域
http://www.cnblogs.com/pure/archive/2013/04/22/3034818.htmlhttp://blog.youkuaiyun.com/sjin_1314/article/details/86830081、位域简介 在嵌入式编程中,经常会遇到下面的结构:[csharp] view plaincopyprint?转载 2015-11-24 14:17:34 · 894 阅读 · 0 评论 -
内部排序-插入式排序
将要排序的元素通过插入的方式找到其适当的位置来进行排序。直接上code吧int g_counter1 = 0;int g_counter2 = 0;void insert_sort(int *list, int len){ int i, j, k; int temp; for(i = 1; i < len; i++) { temp = list[i]; for (j原创 2015-11-25 20:30:42 · 715 阅读 · 0 评论 -
图搜索-dijkstra
利用邻接矩阵来演示dijkstra直接上code吧#include #include #define MAX 1000#define VertexNum 7#define EdgeNum 9int g_graph[VertexNum][VertexNum] = {0};int g_edge[EdgeNum][3] = { {1, 2, 6}, {1, 3, 3}, {原创 2015-12-27 21:36:56 · 6115 阅读 · 0 评论 -
图遍历-广度优先
广度优先遍历最主要的是 利用队列的数据结构。#include #include #define VertexNum 9struct BFS_Node{ int v; struct BFS_Node *next;};typedef struct BFS_Node *Graph;struct BFS_Node BFS_Head[VertexNum];int g原创 2015-12-27 21:40:57 · 6155 阅读 · 0 评论 -
图遍历-深度优先
深度优先遍历最主要的思想是利用了 栈的概念。利用栈来存储已经遍历过的节点。#include #include #define VertexNum 9struct DFS_Node{ int v; struct DFS_Node *next;};typedef struct DFS_Node *Graph;struct DFS_Node DFS_Head[V原创 2015-12-27 21:43:06 · 6576 阅读 · 0 评论 -
C++实现线程安全的单例模式
https://www.cnblogs.com/myd620/p/6133420.html在某些应用环境下面,一个类只允许有一个实例,这就是著名的单例模式。单例模式分为懒汉模式,跟饿汉模式两种。首先给出饿汉模式的实现template <class T>class singleton{protected: singleton(){};privat...转载 2019-02-28 21:55:52 · 518 阅读 · 1 评论