
算法
iteye_10692
这个作者很懒,什么都没留下…
展开
-
如果快速判断一个正整数是否为2的幂次方
给定一个正整数(N = 1) { if (n & (n - 1)) printf("%d: no\n", n); else printf("%d: yes\n", n); } exit(EXIT_SUCCESS);}[/code]2008-12-15 10:13:44 · 579 阅读 · 0 评论 -
字符串的就地逆置
[code="C"]/* 非递归实现 */void reverse(char *s){ char *head; char *tail; char tmp; head = s; tail = head + strlen(s) - 1; while (head < tail) { tmp = *head;...原创 2008-10-06 10:07:49 · 151 阅读 · 0 评论 -
荷兰国旗排序
有一整型一维数组,要求在时间复杂度为O(N)的情况下,把小于零的数置于数组的前面,大于零的数放置于数组后面。[code="C"]void holandflag_sort(int a[], int size){ int i, j, k; i = 0; j = 0; k = size - 1; while (j < k) ...原创 2008-10-06 15:26:35 · 138 阅读 · 0 评论 -
单词统计
[code="C"]#include #include #include #define IN 1#define OUT 0int main(int argc, char **argv){ int count = 0; int status = OUT; char c; while ( (c = getchar())...原创 2008-10-07 14:03:56 · 98 阅读 · 0 评论 -
一个能在Telnet或SSH终端玩的贪食蛇小游戏
[code="C"]//snake.h#define SHM_KEY 1234#define UP 119#define DOWN 115#define LEFT 97#define RIGHT 100#define QUIT 122#define direct (*((int *)p_shm))extern void *p_shm;extern ...2008-10-23 23:49:32 · 689 阅读 · 0 评论 -
求<=n的所有素数
[code="C"]#include #include #include int main(int argc, char **argv){ if (argc != 2) { printf("Usage: ./a.out \n"); exit(EXIT_FAILURE); } int n = atoi(ar...2008-10-24 16:19:20 · 86 阅读 · 0 评论 -
C语言,十进制转十六进制,这种方法比较特别。
C语言,十进制转十六进制,这种方法比较特别。[code="C"]char dec_to_char(int n){ return "0123456789ABCDEF"[n];}[/code]2008-10-30 10:13:51 · 515 阅读 · 0 评论 -
快速判断处理器大小端模式
[code="C"]#include #include #include int main(int argc, char **argv){ int i = 1; char *cp = (char *)&i; if (*cp) //如果此时cp指向的内存为1的话,则为小端,否则为大端。 printf("Little Endian...2008-10-30 10:24:17 · 154 阅读 · 0 评论 -
有字符串s1和s2,要求在s1中删除所有s2的字符,算法要快
例如:str1为 "asdfsa123fasdf123452345fasfasdf182734891624389sadfaklsjfklj"str2为 "0123456789"删除后str1为 "asdfsafasdffasfasdfsadfaklsjfklj"[code="C"]void del_chars(char *str, char *chars){ ...原创 2008-12-10 18:00:38 · 1840 阅读 · 0 评论 -
删除C程序中的注释
[code="C"]#include #include #include int main(int argc, char **argv){ char start; char end; char cur; start = end = '\0'; while ((cur = getchar()) != EOF) { ...原创 2008-09-28 17:29:40 · 375 阅读 · 0 评论 -
判断链表是否有环
[code="C"]/** * if has loop return 1 else return 0 */static int has_loop(List *list){ List *pFast; List *pSlow; pFast = pSlow = list; if (pFast != NULL && pFast->next...原创 2008-09-28 15:27:22 · 91 阅读 · 0 评论 -
在终端打印出扫帚图形
[code="示例"]/* 编程打印出如下图形 */**.*.*..*..*..*...*...*...*...*....*....*....*....*....*.....*.....*.....*.....*.....*.....*......*......*......*......*......*......*......*.......*..........2008-12-16 11:37:28 · 204 阅读 · 0 评论 -
一个单链表,不知道长度,写一个函数快速找到中间节点的位置
[code="C"]/* 假定这个链表只有奇数个节点 */List *list_middle(List *l){ List *fast; List *slow; fast = slow = l; while (fast != NULL) { if (fast->next) fast = fast...2008-12-16 11:49:15 · 650 阅读 · 0 评论 -
打印字符串中所有字符的全排列
[code="示例"]给定一字符串为:"ABC"要能打印出:ABCACBBACBCACABCBA[/code][code="c"]#include #include #include #include static void arrange(char *s, int start, int end);int main(int...2008-09-26 15:06:23 · 262 阅读 · 0 评论 -
根据数组中各元素的大小,在终端中垂直打印与之匹配的*号
如:数组 int a[9] = {1,2,3,4,5,4,3,2,1}; 打印[code="图例"] * *** ***** ******* *********[/code][code="C"]#include #include #include static void erect_pillar(int a[], in...原创 2008-09-26 15:40:02 · 90 阅读 · 0 评论 -
随机抽取某区间内的数,要求全部抽取但不能重复
[code="C"]#include #include #include int rand_no_overlap(int start, int end);int main(int argc, char **argv){ rand_no_overlap(1, 10); exit(EXIT_SUCCESS);}int rand_no_ov...原创 2008-09-26 16:21:21 · 207 阅读 · 0 评论 -
求一字符串中最大回文串的长度
比如:[list][*]"AABB" 回文长度为: 4 回文子串为: "AABB"[*]"12abcba22" 回文长度为: 7 回文子串为: "2abcba2"[/list][code="C"]#include #include #include int main(int argc, char **argv){ if (ar...原创 2008-09-28 10:14:16 · 207 阅读 · 0 评论 -
根据给定的边长,打印正方形的数字自增矩阵
[code="示例"]// 比如边长为7时: 1 1 1 1 1 1 1 1 2 2 2 2 2 1 1 2 3 3 3 2 1 1 2 3 4 3 2 1 1 2 3 3 3 2 1 1 2 2 2 2 2 1 1 1 1 1 1 1 1[/code][code="C"]include #include #include ...原创 2008-09-28 11:51:18 · 343 阅读 · 0 评论 -
判断两个链表有无交点,如果有请给出交点
[code="C"]/* * if list_a and list_b has cross point return the addrss of cross-point. * else return NULL */static List *has_cross(List *list_a, List *list_b){ List *pa; List ...原创 2008-09-28 15:05:20 · 105 阅读 · 0 评论 -
基于二叉树实现路由匹配算法
[code="C"]#include #include #include #include struct node { struct node *left; struct node *right; char *gateway;};void buildtree(struct node *root, char *rule);void ruleSpli...原创 2010-09-13 20:34:00 · 951 阅读 · 0 评论