
算法
文章平均质量分 50
nodeathphoenix
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
字符串压缩算法
如aaabsssc8999kkk,压缩后为3ab3sc8393k string CompressString(string& source) { const char*cur = source.c_str(); int ilength = strlen(cur) + 1; //这里一定要加1,利用source里的结束符'\0'来保证字节串的结尾是没有重复的字符原创 2013-10-18 16:47:39 · 1831 阅读 · 0 评论 -
将IP地址转换为二进制表示
string convert(char* cur, int size) { char byte[10] = {0}; memcpy(byte, cur - size, size); unsigned int value = atoi(byte); char final_value[9] = {0}; for (int i = 0; i < 8; i++) {原创 2017-03-06 15:51:46 · 8249 阅读 · 0 评论 -
二叉树的非递归遍历
1 前序遍历 从根节点开始的所有的左结点依次入栈,然后从root的左子树的左叶子结点开始回溯,那么此左叶子结点一定没有左子结点,可能会有右子结点。该回溯节点出栈后,将它的右子结点当作根结点,重复上述动作。原创 2014-07-18 14:56:08 · 622 阅读 · 0 评论 -
0/1背包问题
背包问题确实是一个让人有点费解的问题,它属于一种动态规划算法。以前确实也没有完全真正理解过这个算法,最近回头仔细品味,自觉有点心得领悟。将书本上的此算法根据自己的理解稍加整理,以一种更适合让人理解的方式呈现出来。 #include<stdio.h> const int N=100; int limitw; int totv; int maxv; int option[N...原创 2016-10-17 18:30:46 · 453 阅读 · 0 评论 -
排序算法
int SortQuick(int* array, int size) { if (NULL == array || 0 >= size) { return 1; } if (2 > size) return 1; int start = 0; int end = size - 1; int key = array原创 2014-07-18 18:36:09 · 567 阅读 · 0 评论 -
判断一个整数是否是回文数
判断一个整数是否是回文,并且不能用额外的存储空间。原创 2014-08-21 00:23:26 · 3479 阅读 · 0 评论 -
实现一个replace函数替换掉指定c串中子字符串
基本思路,先扫描source字符串, 记录下所有原创 2014-07-19 11:42:41 · 8449 阅读 · 0 评论 -
二分查找
bool BinSearch(const int* array, const int size,const int value) { if (NULL == array || 0 >= size) { return 1; } int low = 0; int high = size - 1; int middle = 0; for (;low <= high;) { middle = (low +原创 2014-07-18 18:41:03 · 629 阅读 · 0 评论 -
反转句子中的单词
void reverse_str(char* str, int size) { if (NULL == str) return; if (1 >= size) return; char* start = str; char* end = str + size -1; for(int i = 0;i < size/2;i++) { ch原创 2014-07-19 13:58:40 · 909 阅读 · 0 评论 -
反转字符
void reverse_str(char* str, int size) { if (NULL == str) return; if (1 >= size) return; char* start = str; char* end = str + size -1; for(int i = 0;i < size/2;i++) {原创 2014-07-18 18:31:28 · 601 阅读 · 0 评论 -
反转单链表
1 建立单链表原创 2014-07-18 19:07:02 · 592 阅读 · 0 评论 -
按层次顺序访问结点个数
struct Queue { Node* map[200]; int front; int rear; Queue() {front = 0; rear = 0;} }; int BreadthSearchNumber(Node*root) { if (NULL == root) return 0; Queue queue; queue.rear++; queue.map[que原创 2014-07-18 18:56:08 · 982 阅读 · 0 评论 -
堆排序
今天研究学习了下严蔚敏数据结构中的堆排序算法,据此自己写了一个完整的算法来实践下。 //The beginning index of arrary is 0, not 1. int raw_arr[10] = {4,2,3,6,7,3,1,9,10,8}; void sift(int* r, int l, int m) { int i,j; i = l; //i原创 2014-06-30 14:56:52 · 596 阅读 · 0 评论 -
大数相乘
class NodeData { public: NodeData* next; char num; NodeData() {num = '0'; next = NULL;} }; NodeData* SetUpLinkList() { NodeData* head = new NodeData; bool is_add = true原创 2014-07-16 14:26:46 · 631 阅读 · 0 评论 -
按模反转字符串
按模反转字符串,如123456,按模2反转,则输出为214365,按模3反转,则为321,654,按模4,则是4321,65 //Reverse the node link typedef struct linknode{ int data; struct linknode* next; }node; node* ReverseLinkNode(node* head) {原创 2013-10-21 21:48:33 · 855 阅读 · 0 评论 -
根据二叉树的前序数组和中序数组生成二叉树
typedef struct NodeType{ int data; struct NodeType* left; struct NodeType* right; NodeType(){left = NULL;right = NULL;}; }Node; /* * parameter arr_pre, preorder array of tree * p原创 2014-04-04 15:16:08 · 1279 阅读 · 0 评论 -
检查单链表是否为循环链表
bool CheckCircular(NodeData* head) { if (NULL == head) return false; NodeData* p = head; NodeData* q = p->next; while(1) { if (NULL == p || NULL == q) return false; if (p == q) return tr原创 2014-07-18 16:02:02 · 803 阅读 · 0 评论