代码改变世界

随笔分类 -  算法

[小算法] 交换链表中的两个节点

2012-04-24 14:16 by Kevin Pan, 353 阅读, 收藏,
摘要: 算法代码://SwitchLinkNodes.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include"iostream"#include"fstream"usingnamespacestd;ifstreamfin("data.txt");structLink{intData;Link*Next;};voidSwitchLinkNodes(Link*head,Link*nodeA,Link*nodeB);Link*Bu 阅读全文

[小算法] 合并两有序链表

2012-04-23 13:30 by Kevin Pan, 148 阅读, 收藏,
摘要: #include"stdafx.h"#include<iostream>#include<fstream>usingnamespacestd;ifstreamfin("data.txt");structLink{intData;Link*Next;};LinkMergeLinks(Link*linka,Link*linkb);voidPrintLink(Link*head);int_tmain(intargc,_TCHAR*argv[]){Linklinka,linkb,*pointera,*pointerb;linka.Data 阅读全文

[小算法] 找出单链表中的中间元素

2012-04-18 18:04 by Kevin Pan, 454 阅读, 收藏,
摘要: 两种情况:1. 链表有奇数个结点, 中间元素只有一个;2. 链表有偶数个结点, 中间元素会有两个;#include"stdafx.h"#include<iostream>usingnamespacestd;structLink{intData;Link*Next;};voidPrintMiddleNode(Link*head);int_tmain(intargc,_TCHAR*argv[]){structLinkhead,node1,node2,node3,node4,node5;head.Data=-1;head.Next=&node1;node1.D 阅读全文

[小算法] 反转单链表

2012-04-18 15:32 by Kevin Pan, 189 阅读, 收藏,
摘要: #include"stdafx.h"#include<iostream>usingnamespacestd;structLink{intData;Link*Next;};voidPrintLink(Link*head);voidPrintReverse(Link*node);LinkReverseLink(Link*head);LinkRecurseReverseLink(Link*head);intPrintReverseAt(Link*node,intlastIndex);int_tmain(intargc,_TCHAR*argv[]){structLink 阅读全文

[小算法]从M个不同字符中任取N个字符的所有组合

2011-08-30 15:08 by Kevin Pan, 505 阅读, 收藏,
摘要: 非递归算法#include"stdafx.h"#include<iostream>usingnamespacestd;voidGetCombination(char*chars,intn);intmain(){GetCombination("abcdefg",3);system("pause");return0;}voidGetCombination(char*chars,intn){intindex[10];intstrLength=strlen(chars);for(inti=0;i<n;i++){index[i 阅读全文

[小算法] 递归实现回文判断

2011-08-25 16:39 by Kevin Pan, 335 阅读, 收藏,
摘要: 回文形式:ABCDEFEDCBA, 就是顺着念和倒着念是一样的。代码如下:#include"stdafx.h"#include<iostream>usingnamespacestd;boolPalindromeCheck(char*str,intn);intmain(){char*str="abcdefedcba";boolresult=PalindromeCheck(str,strlen(str));cout<<"string:"<<str<<",result:"& 阅读全文

[小算法] 求高于平均分的学生学号及成绩(学号和成绩从文件读取)

2011-08-24 15:30 by Kevin Pan, 340 阅读, 收藏,
摘要: #include"stdafx.h"#include<iostream>#include<fstream>usingnamespacestd;ifstreamfin("data.txt");doublefind(inttotal,intn);intmain(){doubleaverage=find(0,0);cout<<"Average:"<<average<<endl;system("pause");return0;}doublefind(inttota 阅读全文

[小算法] 使用递归将一个整数逆序放入一数组中

2011-08-23 15:19 by Kevin Pan, 501 阅读, 收藏,
摘要: 使用递归将一个整数逆序放入一数组中#include"stdafx.h"#include<iostream>usingnamespacestd;voidconvert(int*result,intn);intmain(intargc,_TCHAR*argv[]){intn=123456789,result[20]={};convert(result,n);cout<<"n="<<n<<endl;for(inti=0;i<9;i++){cout<<result[i];}cin>>n 阅读全文

二叉树非递归遍历方法(C#)

2010-09-10 17:58 by Kevin Pan, 1551 阅读, 收藏,
摘要: 前段时间写了二叉树的遍历算法,递归方法很简单几行代码就能搞定,但是非递归算法还是有点伤脑细胞。代码如下,可能有问题,希望博友指正,谢谢。public class TreeNode { public TreeNode LChild { get; set; } public TreeNode RChild { get; set; } public string Data { get; set; } ... 阅读全文

面试题:不用比较运算符求两个数种较小的数

2010-09-10 10:58 by Kevin Pan, 552 阅读, 收藏,
摘要: 今天同事去面试,问了一道的算法题如题1. return (a+b-abs(a-b))/2;2. if(a/b) return b; else return a;3. return (a+b) - ((a%b)/a*b+(b%a)/b*a); //((a%b)/a*b+(b%a)/b*a)结果是两数种较大的数暂时就想到以上3种方法。 阅读全文

一个求24点的算法

2009-11-09 01:07 by Kevin Pan, 612 阅读, 收藏,
摘要: 一个求24点的算法[代码] 阅读全文

求2009所在的位置

2009-10-25 20:06 by Kevin Pan, 193 阅读, 收藏,
摘要: /**1 5 7 19 21*3 9 17 23*11 15 25*13 27*29*求2009的位置*/[代码] 阅读全文

自己写的大数阶乘算法

2009-10-25 20:01 by Kevin Pan, 322 阅读, 收藏,
摘要: /*大数问题*用一个整型数组表示一个大数,数组的每个元素储存大数的一位数字,则实际的大数d表示为:*d=a[k]*10的k-1次幂+a[k-1]*10的k-2次幂+......+a[2]*10+a[1].*其中a[0]保存该大数的位数.*一个数N的阶乘(N为无穷大)*/[代码] 阅读全文

判断数组中是否有相同的数

2009-09-13 18:10 by Kevin Pan, 1046 阅读, 收藏,
摘要: Given an array of size N in which every number is between 1 and N, determine if there are any duplicates in it. You are allowed to destroy the array if you like. [ I ended up giving about 4 or 5 diffe... 阅读全文