《算法与数据结构》之实践
江海细流
微信公众号:AV_Chat
展开
-
算法与数据结构之二-------单链表
/****************************************************************文件内容:线性表之单链表操作版本V1.0说明:针对单链表,插入和删除,最好从P节点后面插入或删除操作,避免P节点前面操作。因为前位操作,需要找前驱,单链表找前驱又要从节点头部遍历开始,效率太低。后面因为这个效率原因,引入了双向链表,而双向链表就本身带原创 2014-01-04 19:50:57 · 561 阅读 · 0 评论 -
递归使用----阶乘
/*通过递归调用的方式就阶乘*/#includedouble jiech(int n){ if(n==0||n==1) return 1; if(n>1) return n*jiech(n-1); if(n<0) return -1;}void main(){ int k; double y; scanf("%d",&k); y=jiech(原创 2014-08-12 22:12:50 · 572 阅读 · 0 评论 -
排序算法4--快速排序法
快速排序算法 的基本思想是:将所要进行排序的数分为左右两个部分,其中一部分的所有数据都比另外一 部分的数据小,然后将所分得的两部分数据进行同样的划分,重复执行以上的划分操作,直 到所有要进行排序的数据变为有序为止。原创 2014-08-17 16:48:50 · 571 阅读 · 0 评论 -
排序算法3----插入法
插入法的本质:原创 2014-08-17 16:41:59 · 1825 阅读 · 0 评论 -
顺序法查找
采用顺序法查找就是对数组的各个元素逐一比较原创 2014-08-17 17:38:29 · 624 阅读 · 0 评论 -
二分法查找
二分法查找又称为折半法查找,就是原创 2014-08-17 17:44:53 · 971 阅读 · 0 评论 -
如何判断一个单链表是循环链表
1.循环链表的特点是收尾相接,没有头指针,也没有尾指针。如果去遍历循环链表,则是s原创 2014-08-17 20:06:13 · 7579 阅读 · 2 评论 -
排序算法2----选择法
选择法的本质:不想冒泡法一个一个的交换,选择法,是先找出最大原创 2014-08-17 16:12:32 · 826 阅读 · 0 评论 -
排序算法5----归并法
归并排序也称合并排序,其算法思想是将待排序序列分为两部分,依次对分得的两个部分再次使用归并排序,之后再对其进行合并。原创 2014-08-17 16:51:19 · 707 阅读 · 0 评论 -
排序算法(一)-----冒泡法
/*该程序为最简单的冒泡法,不适用交换标志,使用两重循环,第一重循环我0~cn-1,第二重循环使用 i+1~ cn, 交换元素使用i个跟第j个元素交换,其时间复杂度为O(n^2/2)*/#include#define cnt 9int b[cnt]={90,8,7,6,5,4,3,2,10};void rearange(int b[],int k){ int i,j,qw=0原创 2014-08-11 23:22:13 · 505 阅读 · 0 评论 -
输入一个表示十六进制的字符串,转换为十进制的整数输出。
/***********************************************************************************将16进制的字符串转换成10进制1.如果存在0x 必需将 0x 剔除2.该程序假定是在32位机器上,故16进制为FFFF,不足4个字符串,修正一下,前面空格填03.也可以是用strtol 直接完成字符串和16进制的转换**原创 2014-08-31 16:56:18 · 18395 阅读 · 1 评论 -
数组右移
/******************************************************************************************************1.将最后一个元素暂存2.将数组右移动一位3.将暂存的元素,放到第一个元素中4.多次移动,循环移动即可**/#include#define N 4int savetemp(in原创 2014-08-31 22:02:19 · 1774 阅读 · 0 评论 -
将一个4字节的整数的二进制表示中的001替换为011,输出替换后的整数
#include#include#include/***将十进制转换成二进制,采用递归方法***/char * DectoBin(int n){ static char bin[32]="0000000000000000000000000000000"; static i = 0; int temp ; temp= n%2; n =原创 2014-08-31 22:09:41 · 2411 阅读 · 0 评论 -
算法与数据结构之十----内核中的链表操作学习
/****************************************************************文件内容:内核之链队操作版本V1.0作者:HFL时间:2013-12-22说明:用户态中链表每个节点包含数据域和指针域,而内核态是每个数据中包含链表因此内核态链表一般是嵌套在某个包含数据成员的结构体来实现。内核的链表应用非常广泛:进程管理,定原创 2014-01-04 20:42:07 · 657 阅读 · 0 评论 -
递归使用---费力波数列
/*求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2),本文采用是递归法,效率很低,实际当中应该避免使用递归,这里只是用来熟悉它的使用方法*/#includeunsigned int Fibonacci( unsigned int n){ switch原创 2014-08-12 22:06:18 · 882 阅读 · 0 评论 -
字符串移动
晚上9点一同学求助,帮忙做一个C语言题目,本来也是懒得动,但看到同学那份焦急的心情,还是勉强接受这个挑战原创 2014-08-25 19:50:41 · 620 阅读 · 0 评论 -
算法与数据结构之三----循环链表
/****************************************************************文件内容:线性表之循环链表操作版本V1.0说明:单链表必需从头结点开始遍历,而循环链表可以从任何地方都可以遍历,只不过只能想后遍历循环链表的特点:1.链表头指针和尾指针相接,也就是说没有头指针,也没有尾指针(也没有NULL指针,单链表尾指针为NULL原创 2014-01-04 19:53:54 · 592 阅读 · 0 评论 -
算法与数据结构之四----双向链表
/****************************************************************文件内容:线性表之循环链表操作版本V1.0说明:单链表必需从头结点开始遍历,而双链表可以可以往前后两个方向都可以遍历1.赋值和指向方向不能搞错 A 赋值给B ,说明B指向A2.双向链表跟普通链表操作思想一样,只不过多了一个前驱指针而已。思原创 2014-01-04 19:57:11 · 579 阅读 · 0 评论 -
算法与数据结构之五----顺序栈
/****************************************************************文件内容:线性表之顺序栈操作版本V1.0作者:HFL时间:2013-12-22*****************************************************************/ #include#in原创 2014-01-04 20:00:42 · 557 阅读 · 0 评论 -
算法与数据结构之六----链栈
/****************************************************************文件内容:线性表之链栈操作版本V1.0作者:HFL时间:2013-12-22 *****************************************************************/ #include#in原创 2014-01-04 20:04:03 · 508 阅读 · 0 评论 -
算法与数据结构之七----顺序队列
/****************************************************************文件内容:队列之顺序队操作版本V1.0时间:2013-12-30说明:队列也可以使用顺序表和链表来实现,本文主要讲顺利队列1.为了防止假溢出,采用环形buf。环形buf 指针移到必需通过%来修正2.在环形 buf中,为了区分是空队列还是满队列(因原创 2014-01-04 20:09:24 · 621 阅读 · 0 评论 -
算法与数据结构之八----链队
/****************************************************************文件内容:线性表之链队操作版本V1.0作者:HFL时间:2013-12-22 *****************************************************************/ #include#in原创 2014-01-04 20:11:19 · 1000 阅读 · 0 评论 -
算法与数据结构之九----内核中的链表理论(美文转载)
以下全部来自于http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/index.html 无任何个人意见。一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机转载 2014-01-04 20:18:47 · 665 阅读 · 0 评论 -
算法与数据结构之一------顺序表
/****************************************************************文件内容:线性表之顺序表操作版本V1.0时间:2013-12-12说明:顺便表其实就是一个数组,在数组附近添加一个标记指针。顺序表读和写操作方便,有效信息大(相比链表来说),但查找,插入,删除效率低。通常一个数据结构只涉及到读和写操作,一般使用顺原创 2014-01-04 19:48:49 · 791 阅读 · 0 评论 -
素数两种算法
#include#define N 20#if 0int prime(int n){ int i; for(i=2;i<n/2;i++) if(!(n%i)) return 0; return 1;}原创 2014-08-11 23:33:09 · 556 阅读 · 0 评论 -
回文串算法
/*判断是否为回文串,实际上就是p[i]=p[m-i-1]比较判断而已*/#include#include#includeint ishwc(char *p){ int i,flag=0; unsigned int m=strlen(p); for(i=0;i<m/2;i++) { if (p[i]!=p[m-i-1]) { flag=1原创 2014-08-11 23:42:39 · 797 阅读 · 0 评论 -
提取字符串
晚上jied原创 2014-08-25 19:43:10 · 531 阅读 · 0 评论 -
回文数算法
/*把该数字进行旋转,如果旋转后相等就是回文数,否则不为回文数*/#include static bool IsPn(int num){ int tmp=0; int src=num; while(num!=0) { tmp*=10; tmp+=num%10; num /= 10; } if(tmp==src) return true ; else ret原创 2014-08-11 23:41:05 · 2735 阅读 · 0 评论 -
大小写转换
#include#includechar uppercase(char lowcase){ int delt='A'-'a'; char upper; if(lowcase='a') upper=lowcase+delt; else upper=lowcase; return upper; }void main(){ char a; while(原创 2014-08-12 21:58:57 · 630 阅读 · 0 评论 -
如何实现内存任意bit翻转
工作当中 偶尔会出现DDR内存翻转造成业务流程出错问题。今天一个朋友突然想到如何人为的将DDR任意bit翻转,感觉挺有意思,写了一个小程序。由于是在PC上模拟测试,所以用变量来代替DDR地址。实现嵌入式环境,可以将DDR某个地址映射到虚拟地址,然后采用同样的算法出来bit翻转问题。感觉方法很缺乏技巧性,姑且用着,后续再看。#includevoid main(int argc,char **原创 2016-06-08 23:35:06 · 3556 阅读 · 0 评论