
算法
Mr.VK
这个作者很懒,什么都没留下…
展开
-
【数据结构】【C语言】 栈的应用之进制转换
进制转换使用的方法是短除法短除法图示:原理: 图中9是待转换数,将9与2相除,得到的余数依次入栈,当待转换数9被除为0时,将栈中的余数依次出栈,即得到9的二进制形式:1001代码示例:#include<stdio.h>#include<stdlib.h>#define MAXSTACK 50 //栈的最大容量//结构体的定义——>栈的属性struct myStack{ int* stackMemory; //以栈中存储的数据是整数为例 i.原创 2021-09-08 19:21:31 · 5088 阅读 · 0 评论 -
【数据结构】【C语言】 栈和队列知识点+笔记
队列的定义:队列也是一种线性表,逻辑结构与线性表相同,为一对一结构,分为顺序队列和链式队列。队列只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。栈的定义:栈是一种线性表,限定仅在表尾进行插入和删除操作的线性表,表尾又称为栈顶。逻辑结构与线性表相同,也为一对一结构。线性表分为顺序表和链表,同样的栈也可以分为顺序栈和链栈。顺序栈和链栈的区别:顺序栈的实现在于使用了数组这个基原创 2021-09-07 21:56:08 · 110 阅读 · 0 评论 -
【数据结构】【C语言】 链表知识点+笔记
1. 内存4区代码区:函数代码,存放在代码区,函数名就是这个函数的地址全局区:全局的变量,字符串常量栈区:系统开辟和释放堆区:用户决定要开辟多大内存?装什么数据?使用完后还要不要继续使用? 用户自己需要决定开辟和释放内存示意图:#include<stdlib.h> Int *p; P=(int *)molloc(size); //在堆区开辟size个字节的内存 //指针p指向这段内存 //用molloc去开辟的内存不会自动释放,需要手动释放 Free(p)原创 2021-08-22 23:30:39 · 193 阅读 · 0 评论 -
如何将一个数组A逆序输出到另一个数组B
例子1:#include<stdio.h>int main(){ int a[5],b[5]={1,2,3,4,5}; int i,j; for(i=0,j=5-1;i<5;i++,j--) { a[j]=b[i]; } for(i=0;i<5;i++) { printf("%d\x20",a[i]); } return 0;}输出结果:例子2:#include<stdio.h>int main(){ int i,j,n;原创 2020-12-10 08:39:03 · 2064 阅读 · 0 评论 -
冒泡排序法(C语言)
冒泡排序:相邻两个数两两比较,小的数向前移(上浮),大的数向后移(下沉),如同水中的泡泡上浮一般;冒泡排序图示:如果有N个数,则要跑N-1次比较(每跑一次比较就会有一个较大数“沉底”),交换两个数的次数会随着跑的次数越来越多而变少。C语言代码:#include<stdio.h>int main(){ int a[5]={4,3,1,6,0}; int t,i,j; for(i=0;i<5-1;i++)//要跑5-1次 { fo原创 2020-12-10 14:10:50 · 1199 阅读 · 0 评论 -
快速幂算法 Quickmod(C语言)
快速幂的算法快速幂算法一般用于指数比较大的幂运算,例如3的100次方,2的50次方等等,相比于使用pow(a,b)函数来说,快速幂运行所需时间更小,在一些有时间限制的题目上有着非常大的优势算法原理:例如我要算3的100次方,我们可以不停的3x3x3x3……x3一直乘到第100-1个3,这样算起来虽然比较直观易懂,但是如果放到代码上去运行步骤会非常的重复繁琐,而且运行的时间比较长快速幂原理是将3的100拆分为3的50次方和3的50次方相乘,而3的50次方又可以拆分为3的25次方与3的25次方相乘只原创 2020-12-17 17:08:50 · 1615 阅读 · 1 评论 -
辗转相除法求最大公约数 gcd算法(C语言)
代码实现:#include<stdio.h>int main(){ int a,b,r,temp; scanf("%d %d",&a,&b); if(a<b)//如果a<b,将a,b位置对换 { temp=a; a=b; b=temp; } r=a%b; while(r!=0) { a=b; b=r; r=a%b; } //当r=0时,此时b的值就是最大公约数 printf("%d\n",b); return原创 2020-12-17 18:13:14 · 595 阅读 · 0 评论