- 博客(21)
- 收藏
- 关注
原创 折半查找法(代码)
//折半查找法(Binary Search)void BinarySearch(int Letf, int Height, int x, int a[]){ if (Letf > Height) { printf("查找失败!\n"); return; } int middle = (Letf + Height) / 2; if (x == a[middle]) { printf("查找成功!\n"); return; } if (x < a[middle].
2021-11-13 19:10:52 972
原创 判断素数代码(C语言)
int prime(int n){ if(n<=1) { return 0; } int i; for(i=2;i<n/2;i++) { if(n%i==0) { return 0; } } return 1;}
2021-11-12 18:45:05 488
原创 设计一个函数,函数将参数x的值的第n位设置为0/1(0 <= n <= 31)并返回新的值
函数将参数x的值的第n位设置为0(0 <= n <= 31)并返回新的值int clearMask(int x, int n){ return x&((0xffffffff^(0x1<<n)));}函数将参数x的值的第n位设置为1(0 <= n <= 31)并返回新的值int setMask(int x, int n){ return ~(~x&((0xffffffff^(0x1<<n))));}...
2021-11-11 10:33:45 560
原创 设计一个函数,函数将参数x的值的第n个字节取出(0 <= n <= 3)并返回
unsigned umax(int n){ return (1<<(n-1))-1+(1<<(n-1));}
2021-11-11 10:31:26 610
原创 设计一个函数,该函数返回一个整数数据的二进制镜像数。所谓二进制镜像数,是指二进制表示和该数的二进制表示正好逆序的数。
int binMirror(int x) { int m=0,n=0; int i; for(i=0;i<31;i++) { n=x&0x1; if(n!=0) m=((m+1)<<1); if(n==0) m=(m<<1); x>>=1; } return m; }
2021-11-11 10:29:35 801
原创 设计一个函数,用于输出一个整型数据的32位二进制补码编码。
void twosComplement(int x){ int i; for(i = 0;i<32;i++) { printf("%u",(x&(0x1<<31))&&1); x<<=1; }}
2021-11-10 19:35:58 890
原创 设计一个函数,用于测试参数x是否能被n位补码整数表示(1 <= n <= 32)。如果能返回1,否则返回0
int fitsBits(int x, int n){ if(x>=0)return (x>((1<<(n-1)-1)))?0:1; if(x<0)return (x<(-1)<<(n-1))?0:1;}
2021-11-10 19:34:17 839 3
原创 将给定的任意整型数据视为一个IPv4地址,并以点分十进制形式显示该IP地址。
void showIP(int x){ printf("%d",(x&0xff000000)>>24); putchar('.'); printf("%d",(x&0x00ff0000)>>16); putchar('.'); printf("%d",(x&0x0000ff00)>>8); putchar('.'); printf("%d",(x&0x000000ff));}
2021-11-10 19:33:43 1719
原创 在不使用除法运算符的情况下,计算 x/(2^n),0 <= n <= 30,要求向 0 舍入
int divpwr2(int x,int n){ if(x>=0) return x>>n; if(x<0) return (~(((~x)+1)>>n))+1;}
2021-11-10 19:32:49 317
原创 在不使用按位与运算符&的情况下,实现按位与运算,可以使用按位取反~和按位或|
int bitAnd(int x, int y){ return ~((~x)|(~y));}
2021-11-10 19:29:20 332
原创 在不使用任何关系运算符的情况下,对参数x的符号进行判断,如果大于0则返回1,否则返回1
int isPositive(int x){ return !(((x-1)^0x1000)>>31);}
2021-11-10 19:28:42 694
原创 不使用任何关系运算符的情况下,判断x <= y是否成立
int isLessOrEqual(int x, int y){ return ((x-y-1)>>31)*-1;}
2021-11-10 19:28:05 518
原创 位运算求log2X
定义ilog2函数-返回floor(log base 2 of x), x > 0 (即求以2为底x的对数,且向下取整)int ilog2(int x){ if(x!=0) return 1+ilog2(x>>1); return -1;}
2021-11-10 19:26:49 1275 1
原创 数据结构kmp算法next函数
void get_next(char *T,int *next){ int i = 1,j = 0; next[1] = 0; while( i < strlen(T) ) { if(j == 0 || T[i-1] == T[j-1]){ next[++i] = ++j; } else { j = next[j]; } }}
2021-11-08 11:07:39 296
原创 数据结构 循环队列代码(顺序存储结构)
#include <stdio.h>#include <stdlib.h>//#define MaxSize 10struct Queue { int * Data; // 动态分配存储空间 int Front; // 队头 int Rear; // 队尾 int Size; // 队列中元素个数 int MaxSize; // 队列最大容量};struct Queue create(){ struct Queue p; p.MaxSize = 10
2021-11-07 22:52:17 73
原创 数据结构返回父节点
编写函数 Father,对二叉树 T 中的给定结点 P,返回 P 的父结点指针;若 P 为根结点,返回 NULL。struct TreeNode *Father(struct TreeNode *T,struct TreeNode *P){ struct TreeNode*K; K=NULL; if(T==NULL||T==P) { return NULL; } if(T->Left!=NULL && T->Left == P) { return T-&
2021-11-07 22:44:47 780 1
原创 数据结构复制二叉树
struct TreeNode * TreeCopy(struct TreeNode *T,struct TreeNode *K){ if(T!=NULL) { struct TreeNode *Copy; Copy = (struct TreeNode *)malloc(sizeof(struct TreeNode)); Copy->Data = T->Data; Copy->Left = NULL; Copy->Right = NULL; K = C
2021-11-07 22:43:01 148
原创 数据结构 返回叶结点个数
int Count(struct TreeNode *T){ if(T==NULL) { return 0; } else { return 1+Count(T->Left)+Count(T->Right); } }
2021-11-07 22:39:32 125
原创 数据结构 二叉树返回结点个数
int Count(struct TreeNode *T){ if(T==NULL) { return 0; } else { return 1+Count(T->Left)+Count(T->Right); } }
2021-11-07 22:38:13 550
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人