C/C++语言(数据结构)
文章平均质量分 75
C/C++语言(数据结构)案例和解析,以及知识
程序员猫爪
以问题解决为导向,深入学习技术,而不仅仅停留在表面应用的层面。探索技术背后的原理和机制,理解其优势和局限性,以及如何有效地利用该技术解决特定的问题。
展开
-
C/C++数据结构-完整代码-插入排序代码实现
原理代码实现#include <stdio.h>#include <string.h>#include <stdlib.h>//从小到大排序void insertSort(int arr[],int len){ for(int i = 0; i < len;i++){ if(arr[i] < arr[i-1] ){ //判断当前元素是否比前一个大(如果满足条件将当前元素报错将当前元素前面的元素向后移动)原创 2021-09-28 20:46:52 · 225 阅读 · 3 评论 -
C/C++数据结构-完整代码(四)队列【Queue】(树和二叉树)(二叉树代码实现)
一、树的基本概念1、树的定义由一个或多个(n≥0)结点组成的有限集合T ,有且仅有一个结点称为根( root ) ,当n>1时,其余的结点分为m(m≥0)个互不相交的有限集合T1,T2,…,Tm。每个集合本身又是棵树,被称作这个根的子树。2、树的结构特点非线性结构,有一个直接前驱,但可能有多个直接后继( 1:n )树的定义具有递归性,树中还有树。树可以为空,即节点个数为0。3、若干术语根→即根结点(没有前驱)叶子→即终端结点(没有后继)森林→指m棵不相交的树的集合(原创 2021-09-25 20:54:19 · 518 阅读 · 0 评论 -
C/C++数据结构-完整代码(三)队列【Queue】(顺序存储,链式存储)增删改查
队列1、队列的基本概念队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—firs原创 2021-09-09 20:54:19 · 1034 阅读 · 0 评论 -
C/C++数据结构-完整代码(二)栈(栈的顺序存储,栈的链式存储,就近匹配,中缀表达式和后缀表达式)
一、受限线性表1、栈(Stack)(1)栈的基本概念概念:首先它是一个线性表,也就是说,栈元素具有线性关系,即前驱后继关系。只不过它是一种特殊的线性表而已。定义中说是在线性表的表尾进行插入和删除操作,这里表尾是指栈顶,而不是栈底。特性(先进后出的数据结构)它的特殊之处在于限制了这个线性表的插入和删除的位置,它始终只在栈顶进行。这也就使得∶栈底是固定的,最先进栈的只能在栈底加栈不可以遍历、只有栈顶元素可以被外界访问到(遍历:不重复不遗漏访问容器中的所有数据遍历算法属于非质变算法)原创 2021-09-07 19:22:01 · 469 阅读 · 0 评论 -
C/C++数据结构-完整代码(一)数据结构的理论,线性表(动态数组,链表)(完整的算法代码-增删改查-代码解析+运行结果解析)
一、数据结构理论1、数据数据∶是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。2、数据结构概念数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。数据结构是计算机存储、组织数据的方式。是相互之间存在一种或多种特定原创 2021-08-29 20:07:44 · 1259 阅读 · 1 评论 -
C/C++语言数据结构快速入门(一)(代码解析+内容解析)数据结构基本内容和线性表
一、什么是数据结构1、什么是程序程序=数据结构+算法数据结构:如何把现实世界的问题信息化,将信息存储到计算机当中。同时要实现对数据结构的基本操作。算法:如何处理这些信息2、什么是算法如何处理信息的方式,解决问题的方法(1)算法的特性a、有穷性:一个算法必须总在执行有穷步骤之后结束,且每一步都可以在有穷时间内完成。注意:算法必须是有穷的,而程序可以是无穷的设计一个算法,解决一个特定的问题(在有限的步骤和有限的时间内完成)b、确定性:算法中每条指令必须要有确切的含义,对于相同的输入只能得原创 2021-06-15 20:28:03 · 2006 阅读 · 3 评论 -
C语言算法,图解+详解 统计输入字符串当中要查找字符串的数量,substr所指的子符串在str所指的字符串中出现的次数。
统计输入字符串当中要查找字符串的数量统计substr所指的子符串在str所指的字符串中出现的次数。例如,若字符串为aaas1kaaas,子字符串为as,则应输出2。请改正程序中的错误,使它能得出正确的结果。原创 2020-06-05 10:17:06 · 941 阅读 · 0 评论 -
C语言算法题,统计个年龄段的人数0~9,10~19.。。。。分别放置到数组b[0],b[1].........
C语言算法题,统计个年龄段的人数0~ 9,10~19.。。。。分别放置到数组b[0],b[1]…#include<stdio.h> #define N 50#define M 11void fun(int *a,int *b){ //将a数组当中的数据统计到b数组当中 int i,j; for(j=0;j<M;j++){ b[j]=0; } for(i=0;i<N;i++){ if(a[i]>=100){ b[10]++; }else{原创 2020-05-30 09:48:07 · 2561 阅读 · 0 评论 -
掌握C语言判断素数(质数)相关内容
素数就是(质数),就是只能被1和自身整除的大于1自然数。例一、已知m是一个大于1的正整数,编程序判断m是否为素数。编程思路:1、要判断m是否为素数,只需要检测m是否能被2到m-1之间的整数整除。2、判断思路(1)如果m不能被2整除;(例如m=7)m也不能被3整除;。。。。。m也不能被m-1整除;m是素数。(需要同时满足多个条件)3、判断思路(2)若m能被2到m-1之间的某一...原创 2020-05-03 13:59:24 · 5402 阅读 · 2 评论 -
C语言算法 求最大公约数(辗转相除法)
辗转相除法(欧几里德算法)假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里德算法,是这样进行的:1997 / 615 = 3 (余 152)615 / 152 = 4(余7)152 / 7 = 21(余5)7 / 5 = 1 (余2)5 / 2 = 2 (余1)2 / 1 = 2 (余0)至此,最大公约数为1以除数和余数反复做除法运算,当余数为 0 时,取当前算...原创 2020-05-02 09:57:50 · 3568 阅读 · 0 评论 -
C语言文件指针,如何对文件进行操作,文件指针FILE,指向文件指针
C语言文件的定义,如何对文件进行操作,文件指针,如何定义指向文件的指针,通过文件指针对文件进行操作,文件应用举例,二进制文件相关操作,文件定位原创 2020-03-08 15:09:48 · 47400 阅读 · 37 评论 -
C语言当中的位运算
C语言当中的位运算一、位运行运算符~:按位求反<<:左移>>:右移&:位与^:异或|:位或二、按位求反按位求反原理:将对应的其他进制的数字转换为二进制, 把0变成1,把1变成0计算机当中二进制数在内存中以补码的形式存储注意:另外,正数的原码、补码和反码都相同负数的反码与原码符号位相同,数值为取反;补码是在反码的基础上加1举例:原创 2020-03-05 20:39:32 · 533 阅读 · 0 评论 -
C语言共用体,共用体内部存储结构
一、公用体1、什么是公用体定义:所有成员都使用同一片地址单元2、如何来定义公用体格式:union 公用体类型名称{ 成员链表};说明:1)公用体的定义与使用方法与结构体类似2)结构体当中的各个成员都有属于自己的存储单元,而公用体中的各个成员都共享同一个存储单元。3)数据类型与存储单元大小的对应关系:int ----> 4个存储单元(4个字节,32位二进制)f...原创 2020-03-05 17:20:54 · 1992 阅读 · 0 评论 -
C语言数据结构C语言当中的链表,什么是链表,链表的三要素,创建一个链表,查找链表当中的元素,删除指定的结点的链表,链表的插入(向链表当中插入元素)
链表:1、什么是链表2、链表的三要素:头指针(head):头指针是用来说明链表的开始了,头指针就代表了链表本身,所以要访问链表,就要访问头指针。头指针:就代表公司老板。老板就代表头指针。结点(node):链表当中每一个变量被称为结点尾指针:用来说明链表结束(它是一个空指针,NULL)...原创 2020-03-04 20:22:28 · 1127 阅读 · 0 评论 -
C语言指向结构体的指针,如何通过指针获取结构体当中的值
C语言指向结构体的指针,如何通过指针获取结构体当中的值格式:结构体类型 变量名称 ,* 指针名称 = &变量名称;案例如下定义结构体并定义结构体指针让其指向结构体#include<stdio.h> #include<string.h> typedef struct stud{//定义了一个结构体 char Id[10];//学号 char Name[10];...原创 2020-03-01 18:02:03 · 11510 阅读 · 0 评论 -
C语言结构体数组,结构体数组的定义,结构体数组的输出,结构体的应用
结构体数组结构体数组格式:声明变量类型 数组名称[数组长度]//定义一个结构体数组名为a,它里面包含有5个元素,每一个元素都是一个结构体变量Wor a[5]={};...原创 2020-02-29 19:41:52 · 66878 阅读 · 10 评论 -
C语言结构体的定义和用法,定义结构体,定义结构体变量,结构体变量赋初值,输出结构体变量的值
结构体一、什么是结构体:1、不同类型的变量集合被称为结构体2、结构体的目的是为了描述一个对象,为了把一个对象描述清除必须要所出这个对象的很多属性,而为了表示这些属性就要用到不同的变量,而且变量不止一个。二、如何来定义结构体:1、定义结构体格式:struct 结构体{ 属性列表 };比如:定义一个结果体,目的是为了描述一个工人struct worker { char id[...原创 2020-02-27 20:01:25 · 5036 阅读 · 4 评论 -
C语言当中的宏定义,宏的相关概念和作用和用法
一、什么是宏1、用一个字符串表示有意义的常量或常量表达式(被称为宏)二、如何来定义宏1、宏的分类:A、有参宏:格式: #define 宏名 常量或常量表达式比如: #define PI 3.14 (以后在程序当中只要看到了PI就代表3.14)#include<stdio.h> #define PI 3.14void main(){ int r =...原创 2020-02-26 20:08:44 · 4869 阅读 · 0 评论 -
C语言当中的二维指针
C语言当中的各种指针1、int a,*p=&a;//指向普通变量的指针2、int a[3],*p=a;//指向一维数组元素的指针3、int a [3] [4], (*p)[4];//指向一维数组的指针4、int (*p)(int,int);指向函数的指针(函数指针)5、int *sum(int a,int b);一个返回指针的函数(指针函数)6、int **p;二维指针指向...原创 2020-02-25 19:29:47 · 873 阅读 · 0 评论 -
C语言返回指针的函数,指针函数,让一个函数返回一个字符串
返回指针的函数(指针函数)什么是返回指针的函数一个函数可以返回一个整形值字符型值实型值1、如果一个函数它的返回值是一个地址(是一个指针的话),这个函数是一个返回值是指针即指针函数。2、返回指针的函数是函数,而不是指针注意函数指针和指针函数是不一样的概念int (*p)(int,int);//这是是指向函数的指针(指针函数)返回值为浮点类型,整数,字符float aver...原创 2020-02-25 17:59:20 · 6560 阅读 · 1 评论 -
C语言指针数组介绍,定义指针数组,输入输出指针数组
C语言指针数组介绍,定义指针数组,输入输出指针数组1、什么是指针数组; (1)数组里面的每一个元素不是值而是值,而是指针。 (2)把很多的指针集合在一起,就是一个指针数组2、定义一个指针数组:***(p+1) 和* *(*p+1)的区别 定义了一个数组名为a,它里面含有几个四个元素,他们分别是a[0],a[1],a[2],a[3], 它们都是一个指针。3、如何给指针数组赋初值:原创 2020-02-23 16:38:38 · 31156 阅读 · 6 评论