- 博客(52)
- 收藏
- 关注
原创 函数重载-引用以及const修饰
最近在学习c++,才发现函数重载在类以及三大特性中应用这么多,因此来进行一个小小知识点的补充复习。可以看出引用和const引用的写法以及函数形参的写法不同。主函数在调用时,进行如下操作。
2023-03-29 21:50:49
117
原创 循环链表、双向链表
循环链表是另一种形式的链表,其特点是表中最后一个结点的指针不再为NULL,而是指向头结点形成一个闭环,从表中任意一处出发均可以找到其他所有元素。AB为两个链表,AB分别为两个链表的尾结点,我们可以对这两个循环链表进行操作构成一个循环链表。双向链表:在双向链表的结点中有前后两个结点,一个指向前继,一个指向后继。其操作跟普通链表相差不大,不过我们可以进行两个循环链表的合并操作。双向链表的操作中,插入和删除结点较为麻烦。
2022-09-17 22:47:23
477
原创 单链表的实现
用单链表表示线性表的时候,数据元素之间的逻辑关系由结点中的指针指示,即逻辑上相邻的两个数据元素其存储的物理位置不要求相邻,这种存储结构称为非顺序映像或链式映像。其中数据域是存放待存储的信息,指针域则是前后两个结点相互联系的关键,通过指针,可以通过前一个结点查找到后一个结点的地址,进而查找信息。其特点是用一组任意的存储单元存储线性表的数据元素,与线性表相对比,线性表是占用一块连续的存储空间,而链表可以利用其余不连续的空间。链表中的每个数据元素称之为结点,其结构分为数据域+指针域。查找指针数值的存在与位置。
2022-09-08 22:01:13
245
原创 链表的创建及其系列操作
链表是一个存储非连续数据的线性结构,它与顺序表想比其不会浪费过多的空间,实现了不连续的存储先做预备操作#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct node{ int data; struct node* pNext;}NODE,*PNODE;int main(){ PNODE pHead = creatlist();}接下来便要创造一
2022-03-20 21:25:36
1542
原创 栈(存取数据的结构)
数据结构中,栈属于线性结构一类是一种可以实现“先进后出”的存储结构其分为两种类型的栈静态栈(类似于用数组实现) 动态栈(类似于用链表实现)下面开始写关于栈的几个函数代码#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct Node{ int data; struct Node * pNext;}NODE,*PNODE;typedef
2022-03-19 10:37:15
253
原创 链式二叉树的遍历
二叉树的遍历分为三个类型先序遍历 先访问根节点 再先序访问左子树 再先序访问右子树 中序遍历 先访问左子树 再中序访问根节点 再中序访问右子树 后序遍历 先访问左子树 再后序访问右子树 再后序访问根节点 下面我们用程序来演示以上三种遍历操作首先我们先创造一颗树,这个是我之前写的创造二叉树树的代码以及树的基本形状二叉树的创建_RogersX的博客-优快云博客https://blog.youkuaiyun.com/RogersX/article/details/1
2022-03-18 15:35:21
383
原创 二叉树的创建
这段时间学习了树的一些相关知识,因此在这里做一些自己的总结树是一种非线性结构,通过树可以存储数据,并且根据某个位置的信息便可以推断出它整个树的所有内容,下面我演示一下如何创造一颗树利用结构体创建出树的总体构架,分别是一个根节点,以及左子树和右子树struct BTNode//构造二叉树样板{ int data;//根节点 struct BTNode * pLchild;//p指针 L\R表示左右方向 child表示子树 struct BTNode* pRchild;};接下来
2022-03-17 20:03:48
430
原创 链表的初步学习
初步学习链表,掌握了一些基础内容头结点:没有存放有效数据,便于对于链表进行相应的操作首节点:第一个存放有效数据的节点尾节点头指针:指向头节点的指针变量尾指针:指向尾节点的指针变量...
2022-02-27 23:21:56
206
原创 循环辅助continue、break
c语言中的循环中常常会遇到break、continue这种循环辅助,今天我来梳理一下这两者作用1.break:退出当前循环!且break只用于循环在嵌套循环中,break会让程序跳出包括它的当前的循环;如果break在外层循环中时,则会让程序终止这个循环,执行循环下一条的语句while(statement 1) { ...... while(statement 2) { ......
2022-01-24 22:13:03
308
原创 三元运算符?:
寒假在家开始复习c语言,看到三元运算符的时候有感而发,毕竟当时自学的时候这一块有点模糊,所以我特意写个博文来总结一下三元运算符,意味着有3个量要处理,对于?:有这样的一个格式:statemen 1 ? statement 2:statement 3简而言之,statement1要是成立及正确,那么这一项的数值便等于statement 2的数值,反之,则等于statement 3的数值x=(3>2)?12:2;这个例子可以看到,3>2显然成立,那么x的数值等于12,如果条
2022-01-24 21:42:21
507
原创 printf、scanf中的*修饰符
最近寒假在家复习c语言的时候,看到了一个小细节,就是printf中有的时候有*的存在,例如printf("%*.*d",a,b,i);此时,printf中有两个*符号,而且有三个参数,这时你不难看出前两个参数a、b的数值对应着*!也就是说如果a=2,b=3那么原printf应该为printf("%2.3d",i);此时的※用于确定保留变量保留几位小数或者变量所占多少字宽的现象另外,在scanf中也有时出现※的现象scanf("%d,%*d,%*d",&c);
2022-01-20 17:13:23
740
原创 逗号运算符的使用
在c语言的学习中,我们往往会遇到一些有关“,”的情况比如在for循环中所遇到的for(int i=0,int j=2;i<len;i++,j++){......}这种情况是属于一次性定义多个变量或者给出多个条件,同时也往往遇到一些小问题比如int a;a=12,23;printf("%d",a):此时,有伙伴难免纠结a的数值是多少,其实这样的写法等同于int a=12;13;因此a的值为12另外,还会遇到这种情况int a=(12,23);
2022-01-20 17:03:18
626
原创 浮点数的舍入错误
由于浮点数是有位数的限制,而且在计算机储存浮点数的时候,是存在浮点数精度缺失的现象,因此人们常常在浮点数后面加上f来避免精度的确实,下面给大家看一下浮点数舍入错误的一个例子#include <stdio.h>//浮点数舍入错误 //计算机缺少足够小的小数位来完成正确的运算!! int main(){ float a,b; b=2.0e20+1.0; a=b-2.0e20; printf("%f\n",a); return 0;}4008175468544.
2022-01-19 18:13:59
379
原创 输入输出控制符
c语言中存在多种数据类型,比如整型、浮点型等,对于这些数据的输入输出往往对于不同的控制符下面是常用的数据类型对应的输入输出控制符float-----%fdouble-----%lfint-----%dshort(int)-----%hdlong(int)-----%ldlong long(int)-----%lldunsigned(int)-----%u此外,对于不同进制的输入输出控制符也有所不同八进制:%o十进制:%d十六进制:%0x %0X(数字0!!
2022-01-19 18:11:25
2324
原创 浮点数溢出现象
浮点数,在计算机中,其存储的小数是有限制的,常用的float是最多7位小数,double则是16位小数,当要存储的数据的小数位数超过最大存储容量时,往往会出现溢出的现象#include <stdio.h>//浮点数溢出现象 int main(){ float toobig=3.4e38*100.0f; float toosmall=(0.1234e-10)/10; printf("%e\n",toosmall); printf("%f",toobig); return 0;
2022-01-19 18:02:09
3109
原创 指针 数组取反
#include <stdio.h>void reverse(int * pArr,int len);int main(){ int i; int a[10]={1,2,3,4,5,6,7,8,9,10}; reverse(a,10); for(i=0;i<10;i++) { printf("%d\n",a[i]); } return 0;}void reverse(int * pArr,int len){ int i,j,m,t; m=(len-1).
2022-01-06 17:33:13
471
原创 指针 比较三个数字大小,并且排序
#include <stdio.h>void swap(int *p,int *q);void exchange(int *p1,int *p2,int *p3);int main(){ int a,b,c; scanf("%d %d %d",&a,&b,&c); exchange(&a,&b,&c); printf("The sorted numbers:\n"); printf("%d>%d>%d",a,b,c).
2022-01-02 18:49:23
924
原创 指针 交换两个数字的问题的求解以及问题的分析
#include <stdio.h>void swap_1(int a,int b)//error_1{ int t; t=a; a=b; b=t; return;}void swap_2(int * a,int * b)//error_2{ int * t;//*t表示int类型 t=a; a=b; b=t; return;}void swap_3(int * a,int * b)//right!{ int t;//交换*a与*b的位置,因此要用到整.
2022-01-01 23:35:57
392
原创 关于pow函数的一点看法(升级版)
#include <stdio.h>#include <math.h>int main(){ long long a,n; scanf("%lld %lld",&a,&n); long long c=pow(a,n); printf("%lld",c); return 0;}2 38--------------------------------Process exited after 1.842 seconds with return .
2022-01-01 13:30:47
470
原创 冒泡排序问题
#include <stdio.h>int main(){ int i,j,a[10],t;//t的作用是交换两个大小不同的数字,摆放他们的合适的位置 for(i=0;i<10;i++)//动态赋值 { scanf("%d",&a[i]); } for(j=0;j<10;j++)//开始两两数字相互间比较 { for(i=0;i<10-j-1;i++) { if(a[i]>a[i+1]) { t=.
2021-12-28 22:40:40
443
原创 斐波那契数列
//斐波那契#include <stdio.h>int main(){ int i,a[10]={1,1}; for(i=2;i<10;i++) { a[i]=a[i-1]+a[i-2]; } for(i=0;i<10;i++) { printf("a[%d]=%-4d\n",i,a[i]); } return 0; } 应用一维数组可以简单求解此外,由于斐波那契数列是从第三个数字开始,其是前2个数字之和,我们可以应用一维数组来求解。...
2021-12-28 22:17:12
337
原创 关于math函数调用pow函数的见解
pow适用于计算一个数字的幂,非常方便,但是实际操作中,往往会出现一些小问题#include <stdio.h>#include <math.h>int main(){ int n; scanf("%d",&n); printf("%d",pow(2,n)); return 0;}输出值为2 0上面的代码生成的结果是0那么不妨在看看下面的代码#include <stdio.h>#include <math.h>
2021-12-21 23:24:48
820
原创 前自增与后自增的区别
学习过程中,我们往往会使用到++a、a++这些代码,平时我们不会在意这两者的区别,但是看到了书本对此专门做了一定的强调,因此我也来强调一下(doge)、#include <stdio.h>int main(){ int a=1; int b=1; int a_post,pre_b; a_post=++a;//a_post为a+1之后的数值 pre_b=b++; //pre_b为b+1之前的数值 printf("%d %d %d %d",a,a_post,b,pre_b);
2021-12-10 23:26:29
1297
原创 将秒数转化成分与秒
最近在看书本,看到一道题目,让我们将给定的秒数换算成其对应的分与秒,觉得挺有意思,便写一写//秒数转化成分钟与秒数#include<stdio.h>#define pre_min 60int main(){ int sec,min,left; printf("convert the second:"); scanf("%d",&sec); while(sec>0) { min=sec/pre_min; left=sec%pre_min; prin
2021-12-10 22:52:11
1041
原创 字符常量与初始化
看了会C primer plus,看到了字符串,以此来发个blog来复习一下#include <stdio.h>int main(){ char i='A';//ASCII中A对应数字65,因次用10进制输出A时时65 printf("%d",i); return 0; } 65--------------------------------Process exited after 0.00588 seconds with return value 0请按任意键
2021-12-06 12:23:03
122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人