![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构及算法
canlynet
喜欢编程,从事IT行业。
展开
-
字符串操作——靠字符串分割字符串
/* * 字符串分解函数。注意strtok比较复杂。要妥善运用! * 也可以不用strtok函数,但要实现字符串靠字符串分割比较困难! * 注意str指向的空间必须是可读可写的(如数组或动态分配的空间), * 不能为字符串常量的指针,因为strtok改变了其中的内容。 */#include <stdio.h>#include <string.h...2010-03-30 22:41:26 · 200 阅读 · 0 评论 -
分治法解决数据最大子段和的问题
有这么一段数据:int nums[] = {-8, 11, -4, 13, -9, -10};要求求出其中最大子段和,即其中某一连续的几个数据之和最大值,比如这段数据,显然是11+(-4)+13=20为答案。使用C程序实现的算法,属于分治法。思路是:从中间划开,下标0~5,中间位置(0+5)/2(整除) = 2,那么取0~2,3~5两段下标,递归求最大子段和,用这两个最大字段和,同从2下标...原创 2016-04-13 17:47:58 · 2874 阅读 · 0 评论 -
字母大小写转换和判断(已测试)
#include <stdio.h>#define thisCharIs(ch, c) (c == (ch|32)) // 判断字母相同(不区分大小写)// 字母转换成小写void Lcase(char *ch){ if (!ch) return; if (*ch >= 'A' && *ch <= 'Z') *ch |= 3...原创 2012-04-09 13:39:18 · 539 阅读 · 0 评论 -
快速排序法C实现
[code="c"]#include /** * @brief 快速排序法 * @param arr 待排序的数组 * @param left 本次排序的数组最小下标 * @param right 本次排序的数组最大下标 * @return 无 */void quick_sort(int arr[], int left, int right){...原创 2012-07-14 18:50:11 · 95 阅读 · 0 评论 -
对纯数字的高效排序算法
通过位操作或数组操作,一次扫描,一次赋值即可完成,对于数据量巨大,数据范围较小的应用具有最大的运行效率。在实际应用场合,最大值和最小值可以直接填写而不通过函数获取。 /** * @file sort.c * @brief 对所有元素都为正整数的数组进行排序 * @defgroup sort * @{ */#include <stdio.h>/...2011-06-22 16:45:26 · 197 阅读 · 0 评论 -
将字符串循环左移n个位置
/** * @file 020_move_string.c * @author dinghuaneng * @date 2011.06.22 * @brief 将字符串进行向左旋转,即循环左移的算法实现。 * 最后那种方法在时间和空间上都很高效,且代码简短,很难出错。 * 最节约空间和时间的方法来源:《编程珠玑》 * @defgroup mo...2011-06-16 22:43:16 · 532 阅读 · 0 评论 -
如何将十进制转换成16进制
[code="c"]/* * 功能:演示如何将十进制转换成16进制 */#include #include void hex_covert(int x);void hex_covert(int x){ char a; int y; if (x==0) { printf("0"); return ; } y = x%...原创 2010-01-12 00:16:20 · 332 阅读 · 0 评论 -
编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒
[code="c"]/************************************* 编写一个函数,要求输入年月日时分秒, 输出该年月日时分秒的下一秒。 如输入2004年12月31日23时59分59秒, 则输出2005年1月1日0时0分0秒**************************************/#include ...原创 2010-01-11 22:06:04 · 979 阅读 · 1 评论 -
输出和为一个给定整数的所有组合
[code="c"]/* 2)输出和为一个给定整数的所有组合 例如n=5 5=1+4;5=2+3(相加的数不能重复) 则输出 5 = 1+4 5 = 2+3 这里注意,不能考虑负数,否则将有无数种情况。*/#include #include int main(int argc, char *argv[]){ unsigned long i...原创 2010-01-11 21:56:37 · 1002 阅读 · 0 评论 -
读取file1的内容以行为单位倒置输出到file2中
[code="c"]/* 功能:读取文件file1.txt的内容比如: 12 34 56 输出到file2.txt 56 34 12 备注:本算法只针对这样数据行的文件内容有效。 日期:2009.12.30 作者:DC*/#include #include #include #include int main(int ar...原创 2010-01-11 21:51:56 · 1453 阅读 · 1 评论 -
去除C/C++中的注释
[code="c"]/******************************************************** 功能:去除C/C++中的注释 输入:指向C/C++程序代码的指针 来源:程序员面试宝典第45页 注意:①要考虑到""或' '中的//和/*,//和/*的嵌套关系。 ②单引号、双引号中的//是两个字符,第一个字符在单引号的case语句中跳过...原创 2010-01-11 21:49:52 · 238 阅读 · 0 评论 -
动态规划法求背包装物品价值最大的问题
问题描述:假定背包的最大容量为W(千克),有N件物品,每件物品都有自己的价值和重量,将哪些物品放入背包中可使得背包内物品的总价值最大。假设:W = 10; N = 4;物品重量数组:weights[4] = {5, 4, 6, 3};物品价值数组:values[4] = {10, 40, 30, 50} 可参考网址:http://www.importnew.com/...原创 2016-04-01 17:20:50 · 1225 阅读 · 0 评论