C
文章平均质量分 55
TinyFisher
这个作者很懒,什么都没留下…
展开
-
二分搜索递归与非递归C语言实现
据说90%的程序员都无法正确的写出二分搜索,试了下果然如此,需要注意的地方挺多,所以讲递归与非递归的写法记录下来,以便于复习int binary_search(int array[],int n,int key) //非递归{ int low=0; int high=n-1; while(low<=high) //请注意= { if原创 2013-05-17 11:00:51 · 1223 阅读 · 0 评论 -
双向链表操作大全C语言实现
双向链表的操作和单链表很像,主要包括创建,删除,插入;只要注意下指针的操作即可,废话不多说,直接上代码:typedef struct dnode{ int num; struct dnode *pre; struct dnode *next;}Dnode,*pDnode;pDnode Create() //用户输入创建,-1表示结束{ pDnode he原创 2013-05-30 15:53:15 · 774 阅读 · 0 评论 -
二叉树的创建、前/中/后序遍历、按层遍历C语言实现
二叉树的概念、性质等就不多介绍了,这里用C语言实现了二叉树的建立(1.用户输入,2.给数组参数),前中后序遍历和按层遍历。 1.二叉树的建立typedef struct BNode{ char value; //类型假设为char struct BNode *left; struct BNode *right;} Node,*pNode,*原创 2013-05-23 19:14:18 · 1726 阅读 · 0 评论 -
DP实例之01背包问题C语言实现
问题描述: 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=m原创 2013-05-17 10:47:52 · 1888 阅读 · 0 评论 -
DP实例之最长公共子序列LCS
/* LCS:求最长公共子序列 例如:s1="abdrge",s2="adreg",则LCS="adre" 状态方程:lcs(i,j)=lcs(i-1,j-1)+1,其中s1[i]=s2[j] 或者 lcs(i,j)=max{lcs(i,j-1),lcs(i-1,j)}*/int LCS(char *a,char *b){ int len_a=strl原创 2013-06-13 11:18:34 · 923 阅读 · 0 评论 -
DP实例之最长上升子序列LIS
/* LIS:最长递增子序列,例如:23453267,最长递增子序列为:234567 lis(i)表示以a[i]结束的递增子序列的长度 lis(i)=max{lis(k)+1,1} k from 0 to i-1 最长递增子序列长度为max(lis[]);*/int LIS(int a[],int len){ int *p=(int *)mallo原创 2013-06-13 11:21:57 · 746 阅读 · 0 评论 -
extern "C" 的用意
文章转自:http://blog.csdn.net/wujian53/article/details/706975前些天,编程序是用到了很久以前写的C程序,想把里面的函数利用起来,连接发现出现了找不到具体函数的错误:以下是假设旧的C程序库C的头文件/*-----------c.h--------------*/#ifndef _C_H_#define _C_H_转载 2013-06-04 16:21:42 · 581 阅读 · 0 评论 -
关于回调函数
关于回调函数,搜集了一些网上的说法:1.形象的例子: 你饿了,想吃饭,就一会去问你妈一声"开饭没有啊?"这就正常函数调用. 但是今天你妈包饺子,花的时间比较长,你跑啊跑啊,就烦了.于是你给你妈说,我先出去玩会,开饭的时候打我手机.等过了一阵,你妈给你打电话说"开饭啦,快回来吃饭吧!" 其中,你告诉你妈打手机找你,就是个你把回调函数句柄保存到你妈的动作.你妈打电话叫原创 2013-06-09 10:21:39 · 789 阅读 · 0 评论 -
描述C,C++编译和链接过程
文章转自:http://my.oschina.net/anyway/blog/11262详解link 有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后, 或许转载 2013-07-01 15:41:41 · 2071 阅读 · 0 评论 -
单链表操作大全C语言实现
单链表的操作一般包括:建立,删除节点,插入节点,链表反转1.单链表建立,包括从终端输入和由数组转换而来两种:typedef struct node{ int num; struct node * next;}Node,*pNode;pNode CreateLink(){ pNode head=(pNode)malloc(sizeof(Node));原创 2013-05-30 11:08:53 · 831 阅读 · 0 评论 -
浮点数的二进制表示
文章转自:http://www.ruanyifeng.com/blog/2010/06/ieee_floating-point_representation.html1.前几天,我在读一本C语言教材,有一道例题: #include void main(void){ int num=9; /* num是整型变量,设为9 */转载 2013-05-28 15:29:57 · 708 阅读 · 0 评论 -
归并排序C语言实现
void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;}void merge_array(int a[],int low,int mid,int high,int result[]){ int i,j,k; i=low; j=mid+1; k=0; while(i<=mid原创 2013-05-17 10:55:06 · 788 阅读 · 0 评论 -
快速排序C语言实现
void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;}int partition (int input[],int low,int high){ int position=low-1; int key=input[high]; while(low<high) { i原创 2013-05-16 10:52:07 · 712 阅读 · 0 评论 -
堆排序C语言实现
堆的概念这里不再描述,这里主要实现堆排序,堆排序主要分为两步:1.堆化数组(最小堆);2.交换首尾元素,(则最后一个元素为最小),调整前n-1个元素,使前n-1个元素仍为为最小堆,循环,直到还剩一个元素;这样排序下来,数组为倒序。代码如下:void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;}v原创 2013-05-16 09:27:52 · 758 阅读 · 0 评论 -
冒泡排序C语言实现
即将找工作,打算将各个排序算法复习一遍,便于以后复习,代码均在codeblock下编译通过,重要的地方有注释提醒,第一篇:冒泡排序void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;}void bubble_sort(int input[],int length){ int i,j,flag=原创 2013-05-15 19:39:14 · 859 阅读 · 0 评论 -
内存泄露终极分析
文章转自http://www.360doc.com/content/11/0302/18/5404234_97525468.shtml 内存泄漏是主内存分配了部分内存后而没有释放,逐渐耗尽内存资源,导致系统崩溃。它的后果甚至是会影响到以后内存的正常运行或使用内存损坏~~~ 它主要是指程序中间动态分配了内存,但是在程序结束时没有释放这部分内存,从而造成那一部分内存不可用的情况,重起转载 2013-05-23 10:07:54 · 1691 阅读 · 0 评论 -
getchar,scanf以及缓冲区的概念!
博客转自http://blog.csdn.net/weinixugeyuan/article/details/3980498getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了。getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符。getchar带有显示。转载 2013-05-22 21:20:00 · 878 阅读 · 1 评论 -
获取二叉树的叶子数、高度以及左右子树的交换的C语言实现
二叉树的一些操作具有天然的递归性,本文实现了获取二叉树的叶子总数、获取二叉树高度以及交换二叉树的左右子树,代码均已编译通过。 1.获取二叉树叶子总数:左子树叶子总数+右子树叶子总数typedef struct BNode{ char value; //类型假设为char struct BNode *left; struct BNode *right原创 2013-05-25 15:58:47 · 2236 阅读 · 1 评论 -
根据二叉树的先序和中序遍历还原二叉树
#include#includetypedef struct node{ int value; struct node *left; struct node *right;}Node,*pNode;/* *根据二叉树的先序遍历和中序遍历,还原二叉树 *先序:1,2,4,7,3,5,6,8;中序:4,7,2,1,5,3,8,6*/pNode BuildTree(int p原创 2013-05-27 19:27:50 · 1452 阅读 · 0 评论 -
makefile 编写问题记录
最近写了个小程序,用到了pow()函数,我们都知道需要添加头文件,以及在gcc编译的侍侯加上-lm选项,但是这个-lm选项的位值也是有讲究的,我之前的makefile如下:solution:solution.o gcc -lm solution.o -o solution solution.o:solution.c gcc -c solution.c原创 2013-08-24 11:19:10 · 790 阅读 · 0 评论