双链表插入函数
摘要:1 //双链表插入函数 2 //把一个新值插入到一个双链表中,rootp是一个指向根节点的指针 3 //value是需要插入的新值 4 //返回值:如果链表原先已经存在这个值,函数返回0 5 //如果为新值分配内存失败,函数返回-1 6 //如果新值成功地插入到链表中,函数返回1 7 #include<stdlib.h> 8 #include<stdio.h> 9 #include"doubly_liked_list_node.h"10 11 int dll_insert(register Node *rootp,int value)12 {13 r
阅读全文
posted @
2011-12-19 21:49
candyming
阅读(847)
推荐(0)
插入到一个有序单链表。
摘要:1 //插入到一个有序单链表。函数的参数是一个指向 2 //链表第一个节点的指针,以及一个需要插入的新值 3 #include<stdio.h> 4 #include<stdlib.h> 5 #include"sll_node.h" 6 7 #define FALSE 0 8 #define TRUE 1 9 sill_insert(register Node **linkp,int new_value)10 {11 register Node *current;12 register Node *new;13 //寻找正确的插入位置,方法是按序访问
阅读全文
posted @
2011-12-19 19:59
candyming
阅读(2001)
推荐(1)
c语言函数可变参数列表
摘要:在函数原型中,列出了函数期望接受的参数,但原型只能显示固定数目的参数。让一个函数在不同的时候接受不同数目的参数是不是可以呢?答案是肯定的,但存在一些限制。 考虑一个计算一系列值的平均值的函数。如果这些值存储于数组中,这个任务就太简单了,所以为了让问题变得更有趣一些,我们假定它们并不存储于数组中。先来看一个计较差的,也是不太稳定的一个解决方案: 1 //计算指定数目的值的平均值(差的方案) 2 float average(int n_value,int v1,int v2,int v3,int v4,int v5) 3 { 4 float sum=v1; 5 if(n_values>...
阅读全文
posted @
2011-12-04 16:59
candyming
阅读(7374)
推荐(0)
尾部递归
摘要:尾部递归是一种编程技巧。递归函数是指一些会在函数内调用自己的函数,如果在递归函数中,递归调用返回的结果总被直接返回,则称为尾部递归。尾部递归的函数有助将算法转化成函数编程语言,而且从编译器角度来说,亦容易优化成为普通循环。这是因为从电脑的基本面来说,所有的循环都是利用重复移跳到代码的开头来实现的。如果有尾部归递,就只需要叠套一个 stack,因为电脑只需要将函数的 parameter 改变再重新跑一次。例如,可以把上一次函数的输出当作下一次的输入。然而,利用尾部递归最主要的目的,是要优化。例如在 Scheme 语言中,明确规定必须针对尾部递归作优化。[1][2]可见尾部递归的作用,是非常依赖于
阅读全文
posted @
2011-12-04 16:06
candyming
阅读(1716)
推荐(0)
递归与迭代
摘要:关于c语言部分函数的一些总结和注意事项:递归是一种强有力的技巧,但是和其他技巧一样,它也可能被误用。这里就有一个例子。阶乘的定义往往就是以递归的形式描述的。factorial(n)=1,n<=0;factorial(n)=n*factorial(n-1),n>0;这个定义同时具备了递归所需要的两个特性:1、存在限制条件,当符合这个条件时递归便不再继续;2、每次递归调用之后越来越接近这个限制条件。用这种方式定义阶乘往往引导人们使用递归来实现阶乘函数。程序如下所示: 1 //用递归方法计算n的阶乘 2 3 long factorial(int n) 4 5 { 6 7 if(n<
阅读全文
posted @
2011-12-04 14:17
candyming
阅读(9352)
推荐(0)
递归的应用——输入一个整型值(无符号),把它转换成字符并打印它,前导0被删除
摘要:1 //输入一个整型值(无符号),把它转换成字符并打印它,前导0被删除 2 #include<stdio.h> 3 #include<stdlib.h> 4 void binary_to_ascii(unsigned int value); 5 int main() 6 { 7 unsigned int i; 8 printf("please input a value:\n"); 9 scanf("%d",&i);10 binary_to_ascii(i);11 system("pause");12
阅读全文
posted @
2011-12-04 13:13
candyming
阅读(602)
推荐(0)
输入需要转换的数和进制数,将该数按该进制转换成对应进制数,输出结果。
摘要:1 //输入需要转换的数和进制数,将该数按该进制转换成对应进制数,输出结果。 2 #include <stdio.h> 3 #include<stdlib.h> 4 int Conversion(int number,int system,char output[])//要转换的数据、进制、输出数据 5 { 6 int Quotient,Balance,i=0;//商,余数和标记 7 Quotient = number; 8 9 do10 {11 Balance = Quotient % syste...
阅读全文
posted @
2011-12-03 21:28
candyming
阅读(567)
推荐(0)