![](https://img-blog.csdnimg.cn/20200908194205103.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
大学期间语言学习笔记
文章平均质量分 92
C和C++
Sheerandeng
这个作者很懒,什么都没留下…
展开
-
UDP通信
一、头文件二、服务端三、客户端原创 2020-09-09 17:04:21 · 398 阅读 · 0 评论 -
C与指针
有些任务其他语言也可以实现,但C能够更有效地实现。有些任务无法用其他语言实现,如直接访问硬件,但C却可以。指针虽然很强大,但与之相伴的风险也不小。一、注释/*** 标准输入** 标准输出**** ***/ 注释以符号/*开始,以符号*/结束。第一/*符号和第一个*/符号之间的内容都被看做是注释,不管里面还有多少个/*符号。 在有些语言中,注释有时用于把一段代码“注释掉”,也就是使这段代码在程序中不起作用,但并不将其真正从源文件中删除。...原创 2020-09-09 08:54:35 · 321 阅读 · 0 评论 -
数据结构与算法18——散列表(哈希表)
散列表(哈希表)查找我们要在a[ ]中查找key关键字的记录:—— 顺序表查找:挨个儿比较—— 有序表查找:二分法查找—— 散列表查找:?散列表的查找步骤当存储记录时,通过散列函数计算出记录的散列地址当查找记录时,我们通过同样的是散列函数计算记录的散列地址,并按此散列地址访问该记录。构造散列函数的两个基本原则好的散列函数 = 计算简单+分布均匀直接定址法—— 例...原创 2019-08-25 13:44:56 · 926 阅读 · 0 评论 -
数据结构与算法17——排序总结
原创 2019-08-25 12:16:48 · 150 阅读 · 0 评论 -
数据结构与算法16——堆排序
一、完全二叉树定义:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。二、堆大顶堆:小顶堆:由以上图片可知:根结点一定是堆中所有结点最大或者最小者,如果按照层序遍历的方式给结点从1开始编号,则结点之间满足如下关系:下标i与2i和2i+1是双亲和子女关系。那么大顶堆和小顶堆用层序遍历存...原创 2019-08-22 16:01:08 · 407 阅读 · 0 评论 -
数据结构与算法15——冒泡排序
排序的基本概念与分类通过例子消化概念:在排序问题中,通常将数据元素称为记录。——显然我们输入的是一个记录集合,排序后输出的也是一个记录集合。——所以我们可以将排序看成是线性表的一种操作。排序的依据是关键字之间的大小关系,那么对同一记录集合,针对不同的关键字进行排序,可以得到不同序列。排序的稳定性影响排序算法性能的几个要素时间性能辅助空间算法的复杂度一、冒泡排...原创 2019-08-08 14:50:54 · 283 阅读 · 0 评论 -
数据结构与算法14——二叉树的建立和遍历算法
题目要求:建立二叉树并输出每个字符所在的层数。#include <stdio.h>#include <stdlib.h>typedef char ElemType;typedef struct _BiTNode{ char data; struct _BiTNode *lchild, *rchild;}BiTNode,*BiTree;...原创 2019-08-07 16:37:37 · 162 阅读 · 0 评论 -
数据结构与算法13——二叉树和二叉链表
一、二叉树的定义—— 每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。—— 左子树和右子树是有顺序的,次序不能颠倒。—— 即使树中的某结点只有一颗子树,也要区分是左子树还是右子树。(就像人的左右手,左手拿碗,右手拿筷子)二、二叉树的五种基本形态空二叉树只有一个根结点根结点只有左子树根结点只有右子树根结点既有左子树又有右子树对于很二的二叉树,由于要区分左右,所以...原创 2019-08-07 15:29:13 · 1518 阅读 · 0 评论 -
数据结构与算法12——树和树的存储结构
这是本次学习的第二个数据结构:树。之前我们一直讨论的是一对一的线性结构,无论是线性表也好,栈和队列也罢,都是2p模式。可是现实生活中,3p、4p等现象比比皆是,例如一个年轻的妈妈生了4个孩子,而每个孩子都不像他们的爸爸,那么这类情况我们用线性结构的形式就不足以描述了!所以我们需要研究这种一对多的数据结构:树。一、树的定义树(Tree)是n(n>=0)个结点的有限集。当n=0时成为空...原创 2019-08-07 14:40:26 · 258 阅读 · 0 评论 -
数据结构与算法11——队列
什么是队列?这就是队列这不是队列队列的定义:队列(queue)是只允许在一端进行插入操作,而在另外一端进行删除操作的线性表。与栈相反,队列是一种先进先出的线性表。与栈相同的是,队列也是一种重要的线性结构,实现一个队列同样需要顺序表或者链表作为基础。我们的输入缓冲区接受键盘的输入就是按队列的形式输入和输出的,不然的话就很容易出问题。例如有一天你突然心血来潮,企鹅发一句“ Y...原创 2019-08-06 17:11:46 · 166 阅读 · 0 评论 -
数据结构与算法10——栈(二进制转化为十进制数)
栈是一种重要的线性结构,可以这样讲,栈是前面所讲过的线性表的一种具体形式。栈的最大特点就是后进先出。(就像子弹一样,最后进的子弹,最先出枪口)栈的定义官方定义:栈(Stack)是一个后进先出的线性表,它要求只在表尾进行删除和插入。简单的理解:所谓的栈,其实也就是一个特殊的线性表(顺序表、链表),但是它在操作上有一些特殊的要求和限制:栈的元素必须“后进先出”;栈的操作只能在这个线性表...原创 2019-08-06 14:15:54 · 1811 阅读 · 1 评论 -
数据结构与算法9——双向链表
双向链表结点结构typedef struct _DualNode{ ElemType data; struct _DualNode *prior; // 前驱结点 struct _DualNode *next; // 后继结点}DualNode;双向链表的插入操作插入操作其实并不复杂,不过顺序很重要,千万不能写反了。双向链表的删除操作双向链表可以有效地提高算法的...原创 2019-08-05 21:05:06 · 212 阅读 · 0 评论 -
数据结构与算法8——循环链表(约瑟夫问题)
循环,顾名思义就是:绕。单链表不从头结点出发,就无法访问到全部的结点。事实上要解决这个问题也并不麻烦,只需要将单链表中终端结点的指针端由空指针改为指向头结点,问题就解决了。将单链表中终端结点的指针端由空指针改为指向头结点,就使得整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表。约瑟夫问题据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后...原创 2019-08-04 16:20:08 · 330 阅读 · 0 评论 -
数据结构与算法7——单链表小结(腾讯面试题)
题目:快速找到未知长度单链表的中间结点。既然是面试题就一定有普通方法和高级方法,而高级方法无疑会让面试官大大加分!普通的方法很简单,首先遍历一遍单链表以确定单链表的长度L。然后再次从头结点出发循环L/2次找到单链表的中间结点。算法复杂度为:O(L+L/2)=O(3L/2)。能否再优化呢?有一个很巧的方法:利用快慢指针!利用快慢指针原理:设置两个指针*search、 *mid 都指向单链表...原创 2019-08-03 16:49:47 · 372 阅读 · 0 评论 -
数据结构与算法6——单链表与顺序存储结构优缺点
我们学习线性表最主要的就是学习单链表原创 2019-08-03 15:08:21 · 542 阅读 · 0 评论 -
数据结构与算法5——单链表的整表创建和删除
——对于顺序存储结构的线性表的整表创建,我们可以用数组的初始化来直观理解。——而单链表和顺序存储结构就不一样了,它不像顺序存储结构数据这么集中,它的数据可以是分散在内存各个角落的,它的增长也是动态的。——对于每个链表来说,它所占用空间的大小和位置是不需要预先分配划定的,可以根据系统的情况和实际的需求即时生成。——人生的追求就要像单链表一样,灵活应变!单链表整表创建的算法思路如下:声明一...原创 2019-08-03 14:32:21 · 554 阅读 · 2 评论 -
数据结构与算法4——链式存储结构
前面所讲的线性表的顺序存储结构,它最大的缺点就是插入和删除时需要移动大量元素,这显然就需要耗费时间。线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以在内存中未被占用的任意位置。比起顺序存储结构每个数据元素只需要存储一个位置就可以了。现在链式存储结构中,除了要存储数据元素信息外,还要存储它的后继元素的存储地址(指针)。一、链式存储结构定义我们把存储数据元...原创 2019-08-02 15:26:03 · 1228 阅读 · 0 评论 -
数据结构与算法3——线性表性质与顺序存储结构
这是本次学习的第一个数据结构:线性表。首先通过图片感受一下,线性表的特征。——大家姑且可以把这幅图想象为老师带领同学们外出野营。因为咱们的队伍比较强大,要记住每一位同学并且区分还真是一件不容易的事。——所以咱们想到了一个办法,让大家按照一个约定排成一队,以后大家要怎么记住自己的位置呢?没错,大家只需要记住自己前面的同学就可以了。——老师也可以很容易的清点人数,万一有人走丢,也能在最快时间...原创 2019-08-01 15:59:07 · 525 阅读 · 0 评论 -
数据结构与算法2——时间复杂度和空间复杂度
一、算法效率的度量方法我们提到设计算法就要尽量的提高效率,这里效率高一般指的是算法的执行时间。所谓“是骡子是马拉出来溜溜”,比较容易想到的方法就是我们把算法跑个若干遍,然后拿个“计算器”在旁边计时。这种事后统计的方法看起来的确不错,并且也并非真的要你拿个计算器在那里算,因为计算机都有计时功能。事后统计方法——缺陷:必须依据算法事先编好测试程序,通常需要花费大量的时间和精力。不同的测试环境差...原创 2019-07-31 13:56:47 · 296 阅读 · 0 评论 -
数据结构与算法1——简单介绍数据结构和算法
一、什么是数据结构?数据结构事实上是这个样子的:—— 程序设计 = 数据结构 + 算法—— 再简单的来说数据结构就是关系,没错,就是数据元素之间存在的一种或者多种特定关系的集合。(比如说人与人之间就有剪不断理还乱的关系。)二、逻辑结构和物理结构逻辑结构:是指数据对象中数据元素之间的相互关系,也是我们今后最需要关注和讨论的问题。集合结构:线性结构树形结构图形结构物理...原创 2019-07-30 14:52:25 · 411 阅读 · 0 评论 -
本人秋招结束了,愿所有人都拿到满意的offer
“金九银十”说的确实没有错,大公司大部分都在九月份招聘,十月份的公司基本上都不是上市的公司(不过也并不全对了)。我面试的岗位都是嵌入式软件开发(个别公司没有这个岗位我投的就是C/C++软件开发),九月份面试了有三家吧,十月份也有三家。1,海康威视(参考薪资:10K~11K):海康威视是我秋招面试的第一家公司,整个流程非常规范,是在酒店面试的,感觉非常正规,面试总共有两次,一面是技术面...原创 2019-10-15 23:50:03 · 1933 阅读 · 6 评论 -
C++基础学习笔记 day04
1.静态成员变量在一个类中,若将一个成员变量声明为static,这种成员称为静态成员变量。与一般的数据成员不同,无论建立了多少个对象,都只有一个静态数据的拷贝。静态成员变量,属于某个类,所有对象共享。静态变量,是在编译阶段就分配空间,对象还没有创建时,就已经分配空间。#include <iostream>using namespace std;class Pers...原创 2019-11-17 16:31:23 · 201 阅读 · 0 评论 -
C++基础学习笔记 day03
1.设计立方体类设计立方体类(Cube),求立方体的面积(2*a*b + 2*a*c + 2*b*c)和体积(a*b*c),分别用全局函数和成员函数判断两个立方体是否相等?#include <iostream>using namespace std;/*设计立方体类(Cube)求立方体的面积(2*a*b + 2*a*c + 2*b*c)和体积(a*b*c)分...原创 2019-11-14 15:03:02 · 447 阅读 · 0 评论 -
C++基础学习笔记 day02
1.作业案例:设计圆类#include <iostream>using namespace std;const double pi = 3.14;// 1. 设置一个类,求圆的周长// 周长公式:2*pi*r class Circle // Class代表声明一个类 后面紧跟的是类的名称{public: // 公共权限 // 在类里面写函数...原创 2019-11-11 13:01:12 · 162 阅读 · 0 评论 -
C++基础学习笔记 day01
1.C++概述C++中的++来自于C语言中的递增运算符++,该运算符将变量加1。C++起初也叫“cwithclass”。通过名称表明,C++是对C的扩展,因此C++是C语言的超集,这意味着任何有效的C程序都是有效地C++程序。C++程序可以使用已有的C程序库。C语言和C++并不是对立的竞争关系。2. hello world书写#include <iostr...原创 2019-11-08 10:55:56 · 331 阅读 · 0 评论 -
C语言提高学习笔记
基础:C/C++(封装、继承、多态)、数据结构(了解思想)、系统编程(操作系统)提升:日志库、配置文件、IPC库、socket、数据库统一访问库跳跃:项目1. c语言概述1.1ANSI C/C89标准:不能用变量定义数组inta=1;intarray[a]; (错误)1.2C99标准:可以用变量定义数组2.内存分区2.1数据类型的基本概念数...原创 2019-10-16 22:50:36 · 230 阅读 · 0 评论 -
字符串和格式化输入、输出
一、字符串简介1.1 字符串简介字符串(characterstring)是一个或者多个字符的序列,如下所示:"HUAWEINB!"双引号不是字符串的一部分。双引号仅告知编译器它括起来的是字符串,正如单引号用于标识单个字符一样。1.2char类型数组和null字符C语言没有专门用于存储字符串的变量类型,字符串都被存储在char类型的数组中。数组由连续的存储单元组成,...原创 2019-09-25 13:36:08 · 312 阅读 · 0 评论 -
程序员面试问题
一、 程序设计基本概念1.1 赋值语句int x = 2,y = 3,z = 3;x=( y & z ) // 1. 按位与x=( y && z ) // 2. 与运算y = 4;x=( y | z ) // 3. 按位或x=( y || z ) // 4. 或运算①按位与y :0011z...原创 2019-09-04 19:06:41 · 458 阅读 · 0 评论 -
编程中,循环、迭代和递归之间的区别
循环算是最基础的概念, 凡是重复执行一段代码, 都可以称之为循环. 大部分的递归, 遍历, 迭代, 都是循环。递归的定义是, 根据一种(几种)基本情况定义的算法, 其他复杂情况都可以被逐步还原为基本情况。在编程中的特征就是, 在函数定义内重复调用该函数。例如斐波那契数列, 定义F(0)=1, F(1)=1, 所有其他情况: F(x)=F(x-1)+F(x-2)所有大于1的整数经过有限次的反...原创 2019-08-25 12:53:03 · 1224 阅读 · 0 评论 -
十进制转n进制
方法:除n取余,倒序输出。余数小于10,加48;余数大于等于10,加55。#include<stdio.h>#include<string.h>void shift(char* p, long m, int n) { int r; while (m > 0) { r = m%n; //求余 i...原创 2019-05-12 20:10:15 · 1631 阅读 · 0 评论 -
深入学习C语言和数据结构
c语言的基本知识和关键知识数据结构基础知识和关键知识原创 2019-04-17 21:36:56 · 1133 阅读 · 0 评论 -
C语言重点
位、字节、字位,最小的存储单位,可以存储0或者1字节,常用的计算机存储单位,一个字节等于8位(我是你8,哈哈)字,设计计算机时给定的自然存储单位,对于8位的微型计算机(如,最初的苹果机),一个字长只有8位。从那以后,个人计算机字长增至16位、32位,直到目前的64位。(自我认识:字和字节都是相对位来计量的,我经常拿字节和字比较,有点傻)函数分析程序:程序在三处使用了starbar标识符...原创 2019-03-13 19:54:05 · 644 阅读 · 0 评论