算法
文章平均质量分 50
nodeathphoenix
这个作者很懒,什么都没留下…
展开
-
字符串压缩算法
如aaabsssc8999kkk,压缩后为3ab3sc8393kstring CompressString(string& source){ const char*cur = source.c_str(); int ilength = strlen(cur) + 1; //这里一定要加1,利用source里的结束符'\0'来保证字节串的结尾是没有重复的字符原创 2013-10-18 16:47:39 · 1790 阅读 · 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 · 8117 阅读 · 0 评论 -
二叉树的非递归遍历
1 前序遍历 从根节点开始的所有的左结点依次入栈,然后从root的左子树的左叶子结点开始回溯,那么此左叶子结点一定没有左子结点,可能会有右子结点。该回溯节点出栈后,将它的右子结点当作根结点,重复上述动作。原创 2014-07-18 14:56:08 · 586 阅读 · 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 · 418 阅读 · 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 · 542 阅读 · 0 评论 -
判断一个整数是否是回文数
判断一个整数是否是回文,并且不能用额外的存储空间。原创 2014-08-21 00:23:26 · 3433 阅读 · 0 评论 -
实现一个replace函数替换掉指定c串中子字符串
基本思路,先扫描source字符串, 记录下所有原创 2014-07-19 11:42:41 · 8380 阅读 · 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 · 606 阅读 · 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 · 873 阅读 · 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 · 570 阅读 · 0 评论 -
反转单链表
1 建立单链表原创 2014-07-18 19:07:02 · 557 阅读 · 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 · 946 阅读 · 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 · 568 阅读 · 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 · 604 阅读 · 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 · 831 阅读 · 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 · 1246 阅读 · 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 · 773 阅读 · 0 评论