c语言
菜鸟程序小猿
这个作者很懒,什么都没留下…
展开
-
Fibonacci数列的相关问题
斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144可以使用递归和迭代两种方式递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出./**********************************************************原创 2014-01-02 15:34:14 · 610 阅读 · 0 评论 -
双链表基本操作
对双链表做个总结,下面是一系列基本操作#include #define null 0#define MAXSIZE 50struct strlnode{ int data; struct strlnode *plast; struct strlnode *pnext;};一、创建双链表void create(struct strlnode **p, int x)原创 2014-01-18 20:56:25 · 683 阅读 · 0 评论 -
递归算法——归并排序,快速排序,二分查找
/* * 待排序的数组,算法输入 */ int arrIntegers[10] = { 0, 3, 1, 2, 5, 4, 8, 7, 9, 6 }; /* * 辅助存储空间 */ int tempIntegers[10]; 递归排序:从数组中间划分数组为2个子数组,递归调用归并排序,然后合并(排序过程发生在合并时转载 2014-01-12 21:45:56 · 774 阅读 · 0 评论 -
C语言常用排序——直接插入,冒泡,选择,希尔,快速,堆排序
/* ============================================================================= 相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义): 1、稳定排序和非稳定排序 简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就 说这种排序方法是稳定的。反之,就是非稳定的转载 2014-01-12 20:20:58 · 600 阅读 · 0 评论 -
strassen矩阵乘法
一般情况下矩阵乘法需要三个for循环,时间复杂度为O(n^3),现在我们将矩阵分块如图:( 来自MIT算法导论 )一般算法需要八次乘法r = a * e + b * g ;s = a * f + b * h ;t = c * e + d * g; u = c * f + d * h;strassen将其变成7次乘法,因为大家都知道乘法比加转载 2014-01-14 11:42:09 · 800 阅读 · 0 评论 -
HOJ题目分类
******************************************************************************* 简单题(包括枚举,二分查找,(复杂)模拟,基础数据结构(栈、队列),杂题等 *******************************************************************************转载 2014-01-12 15:13:06 · 2125 阅读 · 0 评论 -
char[] 与char*的区别
一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—全局变量和静态变量的存原创 2014-01-12 14:17:26 · 523 阅读 · 0 评论 -
值交换与字符串交换的对比
void swap_int(int a, int b) { int temp = a; a = b; b = temp; } void swap_int(int *a, int *b) { int temp ; temp=*a; *a=*b; *b=temp;}void swap_str(char *a, char *b)转载 2014-01-12 14:14:08 · 690 阅读 · 0 评论 -
链表问题
数组和链表是两个基本的线性结构,针对数组的问题我们已经探讨了许多,现在我们探讨一下链表List的一些问题。插入和删除都是链表的基本操作,有一些有意思的题目也围绕着这些问题来做文章,请看下面两道题目:1、从无头单链表中删除节点问题:假设有一个没有头指针的单链表,一个指针p指向单链表中的一个节点(不是第一个,也不是最后一个),请将该节点删除掉。2、向无头单链表中添加节点问题:假转载 2014-01-06 13:41:25 · 463 阅读 · 0 评论 -
翻转单链表
翻转单链表的三种方法:大概有这几种: reverse1.新建一个单链表把原链表的内容逐个头插法插入新链表中.从而实现了链表的翻转. reverse2.新建一个数组把原链表的内容copy到数组和新链表中.从而实现了链表的翻转. reverse3.一次遍历单链表,原地将原链表翻转 评注: reverse1 在实现的时候,也只是遍转载 2014-01-05 19:18:24 · 564 阅读 · 0 评论 -
修改字符串
将给定字符串中连续出现3次的小写字母替换为改小写字母在字母表中的下一个字母(z变为a),大写字母和其他字符不处理,仍然保留。要求最终输出的字符串中不再存在任何连续出现3次的小写字母。例如字符串”ATRcccert893#45ae”经过处理后应该为”ATRdert893#45ae”int ChangeString(char *pInStr,char *pOutStr){ int i原创 2014-01-03 18:16:35 · 733 阅读 · 0 评论 -
取给定正整数的指定bit位开始的指定长度的数据
取给定正整数的指定bit位开始的指定长度的数据。bit位从右向左从0开始计算。 input 输入的整数 startbit 需要获取的开始bit bitlen 需要获取的bit长度 Output Param 无 Return Value对应的bit取值原创 2014-01-04 15:55:04 · 1939 阅读 · 0 评论 -
开心的小明
小明要在规定金额内购买物品,要求物品的价格与重要度乘积的总和的最大值#include"cstring" #include"stddef.h" /*功能:输入参数:int*p 指向二维数组的首地址,该二维数组第0行的两个数分别表示:总钱数<30000,和希望购买物品的个数<25; 该数组从第1行到第m行(1<=j<=m)中给出了编号为j的物品的基本原创 2014-01-03 13:26:26 · 621 阅读 · 0 评论 -
home+work(0-1背包问题)
要求在规定时间内做最大价值的作业实质就是0-1背包问题 /*输入: nPapers表示试卷的数目(1≤Papers≤20),nRemain表示剩余的时间(1≤nRemain≤10000),paper[][2]是一个Papers*2的数组,每一行的两个元素依次为做完这一份试卷所需的时间、做完这份试卷的价值输出: *pMaxValue为获得的最大价值返回:0:原创 2014-01-03 12:56:03 · 577 阅读 · 0 评论 -
IP转换
将IP地址由带点的十进制形式A.B.C.D转换为长整型#include#include#include typedef union { unsigned char chAddr[4]; unsigned long numAddr; }IP_ADDR; int main(void) { IP_ADDR addr; ch原创 2014-01-02 16:13:59 · 543 阅读 · 0 评论 -
五分制成绩
char scoreToGrade(int score){ char grade; int temp; temp=score/10; switch(temp) { case 10: case 9:grade='A'; break; case 8:grade='B'; break; case 7:grade='C'; break; case原创 2014-01-02 15:59:14 · 1467 阅读 · 0 评论 -
单链表相关操作
版权所有,转载请注明出处,谢谢!http://blog.csdn.net/walkinginthewind/article/details/7393134链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文转载 2014-01-18 20:43:24 · 520 阅读 · 0 评论