随笔分类 -  C/C++

摘要:A 声明从它的名字开始读取,然后按照优先级顺序依次读取。 B 优先级从高到低依次是: B.1 声明中被括号括起来的那部分 B.2 后缀操作符: 括号()表示这是一个函数,而 方括号[]表示这是一个数组。 B.3 前缀操作符:星号*表示 “指向…的指针”。 C 如果const和(或)volatile关键字的后面紧跟类型说明符(如int,... 阅读全文
posted @ 2014-08-19 20:37 ITtecman 阅读(345) 评论(0) 推荐(0) 编辑
摘要:最近自己编写了一个求n阶行列式的值的C程序,编译成功,并且使用了一个3阶行列式进行了测试,测试也成功了。以为这样就万事大吉了,可是后来在实际应用中调用该函数时却导致程序无法运行。注意到,实际应用中要求的行列式是24阶的,也就是说当阶数超过一定范围时程序就不能正确运行了。苦苦思索之后,反复验证之后,问题根源确定在了“递归”上。虽然C语言本身对于递归的次数是没有限制的,但是,函数递归是依赖于栈实现的,... 阅读全文
posted @ 2014-07-29 08:57 ITtecman 阅读(315) 评论(0) 推荐(0) 编辑
摘要:C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间,也可把不再使用的空间释放,为有效地使用内存资源提供了手段。 动态数组,指的就是利用内存的申请和释放函数,在程序的运行过程中,根据实际需要指定数组的大小。其本质就是一个指向数组的指针变量。 主要用到的内存管理函数是:malloc和free。 1、分配内存函数malloc: 调用形式:(类型说明符*)malloc... 阅读全文
posted @ 2014-07-26 15:04 ITtecman 阅读(517) 评论(0) 推荐(0) 编辑
摘要:1、确定矩阵行数: 使用每次读取一行函数fgets … row = 0; while(fgets(buf, buflen, fp) != NULL) row++; …2、确定矩阵列数:…rewind(fp);col = 0;ch = fgetc(fp);while(ch != ‘\n’){ if(ch == ‘ ‘) col++; ch = fgetc(fp);}col++; //补上最后一列... 阅读全文
posted @ 2014-07-26 10:29 ITtecman 阅读(1347) 评论(0) 推荐(0) 编辑
摘要:一般在调试打印Debug 信息的时候, 需要可变参数的宏. 从C99开始可以使编译器标准支持可变参数宏(variadic macros), 另外GCC 也支持可变参数宏, 但是两种在细节上可能存在区别. 1. __VA_ARGS__ __VA_ARGS__ 将"..." 传递给宏.如 #define debug(format, ...) fprintf(stder... 阅读全文
posted @ 2014-04-24 18:17 ITtecman 阅读(349) 评论(0) 推荐(0) 编辑
摘要:不相交集类型声明及函数实现: /* disjoint_set.h */#ifndef _DISJOINT_SET_H#define _DISJOINT_SET_H#define NUMSETS 5typedef int disjoint_set[NUMSETS + 1];typedef int set_type;typedef int element_type;void initia... 阅读全文
posted @ 2014-04-22 07:56 ITtecman 阅读(394) 评论(0) 推荐(0) 编辑
摘要:功能:查找集合S中第k个最小元。 快速选择算法修改自快速排序算法,当算法终止时,第k个最小元就在位置k上。这破坏了原来的排序;如果不希望这样,那么需要做一份拷贝。 快速选择函数: /* quick_select.h */#ifndef _QUICK_SELECT_H#define _QUICK_SELECT_Hvoid qselect(int array[], int k, int l... 阅读全文
posted @ 2014-04-18 09:31 ITtecman 阅读(239) 评论(0) 推荐(0) 编辑
摘要:快速排序函数: /* quick_sort.h */#ifndef _QUICK_SORT_H#define _QUICK_SORT_H#define CUTOFF (3)void quick_sort(int array[], int n); //快速排序的驱动例程int median3(int array[], int left, int right)... 阅读全文
posted @ 2014-04-17 08:43 ITtecman 阅读(1526) 评论(0) 推荐(0) 编辑
摘要:通用函数: /* common.h */#ifndef _COMMON_H#define _COMMON_Hvoid swap(int *ap, int *bp);void print_array(const int array[], int n);#endif /* common.c */#include "common.h"#include void swap(int *ap, in... 阅读全文
posted @ 2014-04-15 08:38 ITtecman 阅读(1060) 评论(0) 推荐(0) 编辑
摘要:通用函数: /* common.h */#ifndef _COMMON_H#define _COMMON_Hvoid swap(int *ap, int *bp);void print_array(const int array[], int n);#endif /* common.c */#include "common.h"#include void swap(int *ap, in... 阅读全文
posted @ 2014-04-14 08:51 ITtecman 阅读(393) 评论(0) 推荐(0) 编辑
摘要:实例功能:接收一个含有整数元素的数组和一个包含元素个数的整数,将数组中的元素从小到大重新排序。并输出排序前后的数组。 下面以模块划分的思想来实现此功能。 打印数组元素模块: /* common.h */#ifndef _COMMON_H#define _COMMON_Hvoid print_array(const int array[], int n);#endif /* commo... 阅读全文
posted @ 2014-04-13 08:42 ITtecman 阅读(469) 评论(0) 推荐(0) 编辑
摘要:实例功能:接收一个含有整数元素的数组和一个包含元素个数的整数,将数组中的元素从小到大重新排序。并输出排序前后的数组。 下面以模块划分的思想来实现此功能。 打印数组元素模块: /* common.h */#ifndef _COMMON_H#define _COMMON_Hvoid print_array(const int array[], int n);#endif /* commo... 阅读全文
posted @ 2014-04-11 08:41 ITtecman 阅读(1008) 评论(0) 推荐(0) 编辑
摘要:/* bin_heap.h */#ifndef _BIN_HEAP_H#define _BIN_HEAP_Hstruct heap_struct;typedef struct heap_struct *priority_queue;priority_queue initialize(int max_elements);void destroy(priority_queue h);void m... 阅读全文
posted @ 2014-04-08 08:10 ITtecman 阅读(319) 评论(0) 推荐(0) 编辑
摘要:/* hash_sep.h */#ifndef _HASH_SEP_H#define _HASH_SEP_H#define MIN_TABLE_SIZE 5struct list_node;typedef struct list_node *position;struct hash_tbl;typedef struct hash_tbl *hash_table;typedef unsi... 阅读全文
posted @ 2014-04-01 08:55 ITtecman 阅读(432) 评论(0) 推荐(0) 编辑
摘要:分离链接法(separate chaining):将散列到同一个值的所有元素保留到一个表中(用指针实现的单链表)。 /* 实现分离链接法所需要的类型声明 */#ifndef _HashSep_H#define _HahsSep_Hstruct ListNode;typedef struct ListNode *Position;struct HashTbl;typedef struct H... 阅读全文
posted @ 2014-03-31 09:33 ITtecman 阅读(526) 评论(0) 推荐(0) 编辑
摘要:/* hash function */typedef unsigned int Index; IndexHash( const char *Key, int TableSize ) //Key为要散列的关键字, TableSize为散列表的大小{ unsigned int HashVal = 0; while( *Key != '\0' ) HashV... 阅读全文
posted @ 2014-03-31 08:12 ITtecman 阅读(350) 评论(0) 推荐(0) 编辑
摘要:/* AVL树的节点声明 */#ifndef _AVLTREE_H#define _AVLTREE_Hstruct AvlNode;typedef struct AvlNode *Position;typedef struct AvlNode *AvlTree;AvlTree MakeEmpty(AvlTree T);Position Find(ElementType X, AvlTree ... 阅读全文
posted @ 2014-03-28 08:28 ITtecman 阅读(506) 评论(0) 推荐(0) 编辑
摘要:AVL(Adelson-Velskii和Landis)树是带有平衡条件的二叉查找树。 一棵AVL树是其每个节点的左子树和右子树的高度最多差1的二叉查找树。(空子树的高度定义为-1) AVL树的每一个节点(在其节点结构中)保留高度信息。 在高度为h的AVL树中,最少节点数S(h)由S(h)=S(h-1)+S(h-2)+1给出。对于h=0,S(h)=1;h=1,S(h)=2。可以看出函数S(h)... 阅读全文
posted @ 2014-03-27 08:32 ITtecman 阅读(627) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.csdn.net/lw370481/article/details/7311668 函数与宏 #define TABLE_COMP(x) ((x)>0?(x):0) 就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行... 阅读全文
posted @ 2014-03-26 21:05 ITtecman 阅读(1502) 评论(0) 推荐(0) 编辑
摘要:/* search_tree.h */#ifndef _SEARCH_TREE_H#define _SEARCH_TREE_Hstruct tree_node;typedef struct tree_node *position;typedef struct tree_node *search_tree;search_tree make_empty(search_tree t);positi... 阅读全文
posted @ 2014-03-24 09:40 ITtecman 阅读(407) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示