C语言是面向过程的,而C++是面向对象的
C和C++的区别:
C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。
C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。
1 C语言的基础
2 数据类型与运算规则
3 结构设计:顺序结构、分支结构(选择结构)、循环结构
4 数组
5 指针
6 函数
7 数组、指针、函数(结合)
8 对C语言深入理解
9 结构体、共用体
10 文件
公共基础知识(30数据结构、数据库、软件工程、面向对象的思想...)
------------------------------------------------------------------------------------
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
1 数据结构与算法(较大)
1 算法 :解决问题的方法和步骤
2 算法的5个特性:可行性、确定性、有穷性、零个或多个输入、一个或多个输出
3 算法的优劣(时间复杂度(语句频度(语句重复执行的次数,最多))、空间复杂度)
时间复杂度:
int a = 1;
for(i = 1;i <= n;i++)
{
a = a + 1;//n次---O(n) O数量级
}
1 3 5-------O(1)
n n+2 2*n+3...-----O(n)
n^2 2*n^2 +3-------O(n^2)
4 数据结构 = 数据+结构(结合):数据以及数据之间的关系
5 数据:文字、声音、图片、视频...(只要能被计算机所识别的符号)
6 结构(数据间的关系):
3个同学之间关系是亲兄弟(逻辑),他们分别在2/4/8三个座位上。
逻辑结构(逻辑关系):集合、线性结构、树形结构、图形结构(了解)
线性 非线性
存储结构(物理关系):顺序存储、链式存储
集合(一个大的集合)
线性结构: a1→a2→a3→a4....→an
唯一的第一个元素
唯一的最后一个元素
唯一的直接前驱(a3,直接前驱是a2)
唯一的直接后继(a3,直接后继是a4)
线性表、栈、队列、(串、数组、广义表--了解)
1 线性表--最简单的线性结构(a1,a2,a3...an)
插入(在a3之前插入q):(a1,a2,q,a3...an)
删除(删除a2):(a1,q,a3...an)
修改:直接找到编辑:(m,q,a3...an)
2 栈(受限制的线性表):只能在一端进行插入和删除
插入和删除的一端---栈顶
不能操作的一端---栈底
插入元素----入栈
删除元素----出栈
特点:FILO(first in last out)先进后出
LIFO------------------后进先出
举例:子弹夹(先转进去的子弹最后出来)
3 队列(受限制的线性表):只能在一端进行插入,只能在另一端进行删除
插入的一端---队尾(入队)
删除的一端---队头(出队)
特点:FIFO(first in first out)先进先出
LILO------------------后进后出
举例:排队(排在前面的先出去买票)
--------存储结构(看得见)-----
顺序存储:逻辑和物理相统一(逻辑上是什么关系,存储上就是怎么存的)
张三(哥)、李四、王五(弟)
第1个 第2个 第3个
数组来实现(空间要连续)
缺点:空间连续(3000万数据,连续存储)
链式存储:逻辑和物理不一定要统一(用一个节点占多个空间)
(顺序存储,1个数据占1个空间,需要占多个--举例2个空间)
备注:循环队列中元素的个数等于=(rear-front+MAXSIZE)%MAXSIZE
(29 - 5 + 50)%50 = 74%50 = 24
29 - 5 = 24
(5 - 29 + 50)%50
-----------------------------------------------------------------------------------------
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
//复习:数据结构与算法
1 算法:解决问题的办法;5个特性,时间复杂度(语句频度(最大的那个执行次数,数量级(O(1) O(n) O(n^2))))、空间复杂度
2 数据结构:数据+结构
3 数据:文字,凡是能被计算机所识别的符号(文字、图片、视频、声音、文档....)
4 结构(数据间的关系):逻辑结构、存储结构(物理结构)
5 逻辑结构:集合(了解)、线性结构(线性)、树形结构、图形结构(非线性)
6 存储结构:顺序存储(逻辑和存储相统一,空间连续)、链式存储(逻辑和存储不需要统一,空间不需要连续)、索引存储、散列存储(了解)
7 线性结构:线性表、栈、队列(4个唯一:唯一的第一个元素、唯一的最后一个元素、唯一的直接前驱、唯一的直接后继)
(a1,a2,a3,a4,a5....an);
8 线性表
9 栈:受限制的线性表(只能在一端进行插入和删除),特点:FILO先进后出(递归,具有记忆功能、子程序调用),栈顶(插入和删除的那端),栈底(不能动)
10 队列:受限制的线性表(只能在一端进行插入,只能在另一端进行删除),特点:FIFO,队头(删除),队尾(插入):头删除、尾插入,循环队列(顺序)
11 存储结构:顺序存储、链式存储
12 顺序存储:数组实现,空间连续(查找方便,对空间要求太高)
13 链式存储:结点(一个数据域,多个指针域(1个,2个...))
4 树形结构
1 非线性
2 结点的度、树的度、树的深度
3 二叉树(树中任何一个节点的分支的个数要小于2)
4 二叉树的5中形态
5 二叉树的5个性质(p137)
性质4:具有n个结点的完全二叉树,深度为[log2n]+1([log2n]取整数,不会四舍五入)
完全二叉树、满二叉树
满二叉树:二叉树的每个分支都是满的
完全二叉树:二叉树的每个分支要么都是满的,要不就是最后一层的分支可以不满,如果要有右分支,必须要有左分支
满二叉树是完全二叉树的特例。
6 二叉树的遍历:把二叉树的每个节点都走一遍
7 前序遍历:根左右:先遍历根,然后再遍历左边,最后遍历右边
8 中序遍历:左根右:...
9 后序遍历:左右根:...
10 已知前序遍历和中序遍历,能够确定后序遍历
11 已知后序遍历和中序遍历,能够确定前序遍历
12 已知前序遍历和后序遍历,不能够确定中序遍历
5 查找技术
概念:在你的表中查找,我给定的关键字
结果:如果找到了,查找成功,如果没找到,查找失败
平均查找长度:查找关键字过程中,比较的平均次数
办法:
顺序查找:从头到尾一个一个依次找(对数的要求比较低,不要排序),平均查找复杂度---O(n)
二分查找(折半查找):对半找(对数的要求很高,要求从小到大排序),O(log2n)
思想:
我要查找其中有没有89这个数:
1216182889102
首先定义两个量:low,high
123456
1216182889102
lowhigh
取:(1ow+high)/2这个位置的值(取整数,不会四舍五入)
得到的结果是3,比较89和第3个位置的数18比较,发现18小于89
把low的位置移动到18的下一个元素
123456
1216182889102
lowhigh
取:(1ow+high)/2这个位置的值(取整数,不会四舍五入)
得到的结果是5,比较89和第5个位置的数89比较,发现89等于89,这就找到了。
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
6 排序技术
交换排序法:冒泡排序法(O(n2))、快速排序法(O(n2))
插入排序法:直接插入排序(n*(n-1))/2、希尔排序(O(n1.5))
选择排序法: 简单选择(O(n2)),堆排序(O(nlog2n))
2 程序设计基础
结构化程序设计的原则:自顶向下、逐步求精、模块化、限制使用goto语句
-----------------------------------------------------------------------------------------------------------
3 软件工程基础
4 数据库设计基础(难一点)
这些是C/C++能做的
服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等