自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 C/C++文件之间函数的引用

C通过加"中间层"来引用C++(不用修改原C++文件)//C文件int MyMax(int, int);int main(){ int a = 10; int b = 20; printf("%d\n", MyMax(a,b)); return 0;}//C++文件int Max(int a, int b){ return a > b ? a : b;}//中...

2018-03-21 14:12:57 992

原创 静态链表

先上两个百度百科两句话:1、便于在没有指针类型的高级程序设计语言中使用链表结构。2、这种存储结构,仍需要预先分配一个较大的(连续的)空间,但在作为线性表的插入和删除操作时不需移动元素,仅需修改“指针”,故仍具有链式存储结构的主要优点。第一句话说明了为什么需要静态链表。第二句话说明了静态链表的主要特性:不需要指针(用数组下标代替指针),这样就有了链表的优点。同时它又是连续的,所以才能用数组下标代替指...

2018-03-10 13:31:49 1530

原创 关于优先级队列的

参照贺宏宏老师给的写的。顺序的和链式的。每种的又分为“无序入(正常的尾入),有序出”和“有序入,无序出(正常的头出)”。思想都很简单,没什么说的。下面只说代码实现。顺序的比较简单,没什么说的。就是链式的比较麻烦,第一次写,真是有些麻烦(其实不难,就是没做好心理准备,觉得链式的应该跟顺序的一样很简单)。链式的麻烦在于:1、链表的插入和删除,都需要先找到它的前一个,这样才能"真正的"插入和删除。但链式...

2018-03-09 16:07:15 314

原创 堆排

static void HeapAdjust(int *arr, int start, int end){ int parent = start; for (int i = start * 2 + 1; i <= end; i = i * 2 + 1) { if ((i + 1) <= end && arr[i] < arr[i + 1])//让i指...

2018-02-26 21:57:11 258

原创 快排

static void Swap(int *arr, int low, int high) { int tmp = arr[low]; arr[low] = arr[high]; arr[high] = tmp;}static int Pivotkey(int *arr, int low, int high)//三数取中{ int mid = (high - low) / 2 +...

2018-02-26 21:41:08 151

原创 BF和KMP

BF(朴素算法):int BF(const char *str, const char *sub, int pos)//O(m*n){ int lenstr = strlen(str); int lensub = strlen(sub); if (str == NULL || sub == NULL || pos < 0 || pos >= lenstr) { retur...

2018-02-25 10:15:20 179

原创 摧毁链表

//好写,只需要一个变量。但不咋好理解/*思路:总是free头节点的后面那个节点。所以在free前,需要先保存要free那个节点为p,然后再让头节点指向要free的那个节点的next。最后再free掉p,就ok了。判断条件是:头节点的next不为空。*/void Destroy(List plist){ Node *p; while (plist->next != NULL) {

2018-01-26 15:01:56 819

原创 链表逆置

/*思路:先将头节点看作是个空表,即将plist->next置为NULL然后将其后面的所有节点都以头插的方式插进来*/void Reverse(List plist){ if (plist == NULL || plist->next == NULL || plist->next->next == NULL) { return; } Node *p = plist->next

2018-01-26 14:52:29 116

原创 关于结构体,联合体,位字段的大小的

struct A { int a; short b; int d; char c; union { int g; int ar[3]; double f; }; }; struct B { int a; short b; struct { char e; int f; }; char c; int ...

2017-12-24 13:02:31 472

原创 关于“环”的

假如:int arr[10];   int index; 如果想将此数组表示成“环”。往后可以这么写:index = (index == 9) ? 0 : (index + 1);   当然,往前这么表示:index = (index == 0) ? 9 : (index - 1); 还有个更高级的:往后:index = (index + 1) % 10;    往前:index = (index...

2017-12-24 12:54:31 164

原创 关于八进制的一些点

首先,上代码:int main(){ int a = 012; int b = '\012'; int c = '\0123'; return 0;}问:变量a、b、c的值各为多少?a的值:因为是 012, 前面加了个0,所以是以八进制的形式赋值给了变量a,所以a的值为十进制的10.b的值:对于单引号或者shuang'yi

2017-12-02 20:10:37 845

原创 关于数组名的值,地址,表示以及强转等,有些绕的问题

上图:从输出来看。第一行跟第二行结果一样。第一行的 &arr,在编译器看来代表的就是整个数组的地址,所以,它的加1时,加的大小是整个数组的大小。然后第二行的 指针 p 就是 &arr,此处的关键点是:声明指针 p 时,需要声明个 指向数组的指针,因为 &arr 这个指针就是 指向包含20个char类型元素 的指针,所以 p 的声明为:char (*p)[20]。第三行,就是...

2017-12-01 13:10:58 409

翻译 小知识汇总

1、关于如何将不同进制数赋值给变量(转载自 http://c.biancheng.net/cpp/html/1716.html )c语言支持二进制、八进制、十进制和十六进制的计数系统,在表示一个数字时,用某个特殊的字符来区别其所属的计数系统是必要的。在表示二进制数时,要在数字的末尾加上“b”(如101b);在表示八进制数时,要使用0作为开头(如014);在表示十六制数时,要使用“0x”字符序列(如...

2017-11-27 21:58:09 149

转载 将小数按位打印出来的C代码

此代码转载自 http://tieba.baidu.com/f?kz=168653360 ,然后本人作了些小的改善。因感觉挺好玩,就转载过来。void printfFloatBit(float f) //功能:从高位到低位依次输出f的32个二进制位{ int i, j; unsigned char byte = 0;//储存float的一个字节的值 char ch; char *p;

2017-11-26 19:27:51 614

原创 第二次考核问题总结

上题:int a[][3] = { {1, 2}, {3, 4, 5}, {6, 7, 8}, {9} };问:a[0][2]、a[0][3]、a[1][3]、a[0][8]、a[1][7]的值。答案:0、3、6、8、0解析:首先说a[][3]的意思,后面的3表示数组里最多保存3个数。a[0][2],0表示是第1个大括号({}),2表示第1个大括号({})里的第3个值。显然,没越界

2017-11-26 18:48:23 386

原创 关于浮点数的小数部分的二进制表示、精度以及浮点数如何在内存中存放问题

浮点数小数部分二进制转换,:原始数据的小数部分,乘2,取整数部分,去整数部分,然后再乘2,再取整数部分,去整数部分,再乘2......如此循环,直到小数部分值为0(包括此时的取整值)或者小数部分跟原始小数部分相等为止(包括此小数部分的取整值)。然后将取到的整数值顺序排下来就是此小数部分的二进制表示。例:5.750.75 * 2 = 1.5  》10.5   * 2 = 1.0  》1此时的1.0的...

2017-11-21 16:52:45 3586

原创 求进制数的问题

......

2017-11-20 23:39:44 347

原创 关于今天小考核的问题的总结

1.常见的运算符里,从右往左的有:=(赋值)、 ++、 --、 ?:、  *、 &、 !、 sizeof等。2.浮点数不能进行位操作,会改变第一位的符号位。3.switch语句的表达式,不能是浮点数,字符串,可以是bool类型、整型等。浮点数不行的原因:浮点数有精度问题,switch内置的判断相等语句就会出错。字符串不行的原因:字符串都是以指针的形式表示,指针的相等不能代表字符串的相等,字

2017-11-20 23:38:03 182

原创 对整型数字的处理(求位数,顺序打印,逆序打印)

求位数的代码片:int Num(int n){ int count = 0; do { n /= 10; count++; }while(n != 0); return count;}n为传进来的整型数字。dowhile循环内部的代码块为:每去掉最后一位,计数器count就加1。

2017-11-18 14:41:07 916

原创 关于printf和scanf函数的返回值

printf()函数返回成功打印的字符数,包括空格和转义字符(比如‘\n’就属于一个字符),但不包括‘\0'。发生错误时,返回负值(-1)。scanf()函数返回成功读取的项数的个数,未成功赋值的字段不计算在内。如果未读取到项,则返回0。当读取到”文件结尾“时,返回-1。例:int n = printf("Hello,World\n");

2017-11-18 14:22:47 478

原创 关于原码,反码,补码以及数据的溢出

       假设有个char类型的变量a,将10赋值给变量a,a用十进制表示是10,用二进制表示是00001010,对于计算机而言,00001010就是原码。但是,用原码在解决减法时会出现问题,比如:-2+(-2)= -4,用二进制表示就是:10000010 + 10000010 =00000100,结果为4,显然是错的,为了解决这种问题,就出现了反码和补码,。       反码的规则:符号位为...

2017-11-18 14:18:37 3812

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除