- 博客(48)
- 资源 (1)
- 收藏
- 关注
原创 《大话数据结构》——串
串的定义由零个或者多个字符组成的有限序列,又称为字符串无论字符串里是数字还是特殊符号,均表示为字符串的比较比较的实质是字符编码后二进制大小的比较串的存储结构串同样存在顺序存储和链式存储结构,不做赘述串的比较的算法(后续有机会再来补充吧)朴素的模式匹配算法KMP模式匹配算法...
2021-11-10 23:08:24 322
原创 《大话数据结构》——栈与队列
栈栈的定义栈(stack)是限定仅在表尾进行插入和删除操作的线性表栈顶(top)允许插入和删除的一端,另一端叫栈底(bottom)栈:先入后出,类似弹夹栈的顺序存储结构即用数组来实现栈,数组头即下标为0的位置为栈底,以一个top变量来指示栈顶元素栈的链式存储结构栈顶用来插入和删除,故用链表的头部作为栈顶最合适,这样插入和删除的操作时间复杂度就是O(1)栈的作用实现递归实现四则运算表达式求值:涉及中缀表达式转换为后缀表达式的过程队列队列的定义队列(queue)只允
2021-11-10 22:05:37 474
原创 《大话数据结构》——线性表
线性表的的定义线性表元素个数有限;线性表元素的数据类型相同;第一个元素只有一个直接后继,最后一个元素只有一个直接前继,其他中间元素有且只有一个直接前继和直接后继;线性表的抽象数据类型基本操作:初始化、判空、清空、返回某一元素、插入和删除某一元素等线性表的顺序存储结构即线性表的数据元素用一段地址连续的存储单元依次存储;一维数组可以用来实现线性表的顺序存储,但须注意数组长度不等于线性表长度,通常数组长度 >= 线性表长度注意,线性表的第一位称为a1,存放在数组的a0位;该存储
2021-11-04 00:02:22 279
原创 C语言——内存分配
变长数组(VLA)允许使用变量来表示数组的维度,变长数组的变指的是可以使用变量来指定数组的维度,而不是指可以修改已创建的数组大小。变长数组必须是自动存储类别,故不能使用static或者extern存储类型说明符来修饰。变长数组和malloc函数的区别变长数组和malloc函数都可以创建在运行时确定大小的数组,不同点是变长数组是自动存储类型,程序离开变长数组定义的块时,所占用的内存就会消失。malloc则不受此约束。3种创建数组的方式声明数组时,用常量表达式表示数组维度,用数组名方位数组元素。可以
2021-08-04 21:00:04 154
原创 C语言-存储器
说明符auto:表明变量是自动存储期,只能用于块作用域中的变量声明。显示使用auto的目的一般为要是用与外部变量同名的局部变量的意图register:同样是表明变量为自动存储期,只是对象为寄存器存储类型的变量,保护该变量地址不被获取static:静态存储期,修饰文件作用域变量,该变量作用域受限于该文件,修饰块作用域变量,该变量作用域受限于块内;extern:表明该变量的定义在别处。函数的存储类别外部函数:默认类型静态函数:加static修饰的函数,使其只在定义所在的文件起作用内联函数(后面.
2021-08-02 22:45:07 264
原创 C 语言中的变量
自动变量属于自动存储类别的变量,具有自动存储期(变量的存在只在程序进入变量声明所在的块时,程序退出则该变量所在内存位置可被他用)、块作用域且无链接(即只能在该变量定义所在的块中通过变量名访问该变量,其他函数可以使用同名变量)。一般,声明在块或者函数头中的任何变量都属于自动存储类别。为了更明确的表示该意图,可以显式使用关键字auto(该关键字为存储类别说明符)自动变量必须显示初始化,如不初始化则该变量的值时之前占用该空间中的任意值。寄存器变量寄存器变量一般(register只是一种请.
2021-08-01 23:38:21 93
原创 C 语言存储类别详讲
C 语言存储类别详讲作用域链接存储期数据存储在的物理内存,被称为对象(object,C 语言只有在提及存储值的数据存储区域时才会提及对象),该对象可以存储一个或多个数值甚至并未存储数值,但它在存储时依然要具有一定的大小。声明变量可以实现访问对象,变量名是标识对象的一种方式,左值是用于标识或定位存储位置的标签。左值:指定一个对象,所以引用内存中的地址;可修改左值:用于标识可修改的对象,可以用于赋值运算符的左侧;不可修改的左值:一般指的是const限定符修饰的值,该值不能被修改。作用域描述程序中可
2021-07-29 23:40:53 153
原创 5G NR 基本概念——BWP
BWP:BandWidth Part 部分带宽定义:给定μ值(确定子载波间隔)的一段连续的CRB作用优势:降低能耗,业务量小时,UE切换至带宽较小的BWP上提高系统灵活性,每个BWP可以采用不同的配置,根据业务切换合适的BWP前兼容,新技术可在新的BWP中提供,保证系统向前兼容分类:初始BWP:用于空闲态UE接收系统信息并完成随机接入。子载波间隔与频域位置及带宽MIB 携带专用BWP:用于连接态UE数据传输、切换等。子载波间隔与频域位置及带宽通过RRC配置。...
2020-10-11 20:31:47 5522 2
原创 物联网导论-传感器技术
信息技术三大支柱:传感器、通信技术、计算机技术传感器定义:能够感受规定的被测量并按照一定规律转换成可用输出信号的期间和装置。组成:敏感元件:直接感受被测量的转换元件:将被测量转换成电参量(如电压、电感等)基本电路:将电参量接入电路转换成电量输出随着智能化的发展,独立传感器已经不能满足智能化需求,所以传感器逐渐向无线传感器节点发展。无线传感器节点:传感器微处理模块:...
2019-10-22 13:38:57 1056
原创 物联网导论-EPC系统
什么是EPC系统目的:为了实现全球产品唯一标识方便对其进行追踪,有效提高供应链管理与物流成本。利用RFID、无线数据通讯等技术,构建一个覆盖世界万物的实物互联网。EPC系统组成与工作原理系统由全球产品电子代码(EPC)体系、射频识别系统(RFID)和信息网络系统三部分组成。每一部分的详细组成如下:EPC编码:EPC编码字段:标识字段、域名管理、对象分类、序列号RFID系统:前一...
2019-10-21 21:42:16 7797
原创 物联网导论-自动识别技术
自动识别技术常用的自动识别技术:OCR:光学字符识别技术,如答题卡语音识别虹膜识别:生物识别技术指纹识别IC卡技术:集成电路卡,如银行卡。包含:IC卡、接口设备、PC,较大的系统韩包括通信网络和服务器等。条形码技术:最古老的自动识别技术一维条形码:一组规则的条、空和特定字符组成。光的发射与放射。偏重于辨识商品二维条形码:二维码,特定几何图形。偏重于描述商品RFID技术...
2019-10-12 20:09:30 3077
原创 剑指offer(24)——C++实现输出二叉树为某一值的所有路径
题目输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)解题思路从根节点开始,每遍历一个值就将其装入数组path中,当其到达叶节点并且和等于sum了就将路径压入reslut后,清空path,进行递归其左右节点。完整代码/*24-二叉树中和为...
2019-09-05 15:41:18 309
原创 剑指offer(23)——C++实现判断数组是否为二叉搜索树的后序遍历
题目输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。概念二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根...
2019-09-05 11:40:30 376
原创 剑指offer(22)——C++实现从上到下打印二叉树
题目从上往下打印出二叉树的每个节点,同层节点从左至右打印。即按层遍历考察点二叉树遍历方式中的按层遍历 二叉树前中后三种遍历方式解题思路使用队列 使用队列存储一个节点的左右子节点,按照先进先出的思想,先出左再出右,当左出的时候,存储其左右子节点,右出的时候同理。完整代码/*22-从上到下打印二叉树*/#include<iostream>#include<ve...
2019-08-26 17:18:55 248
原创 剑指offer(21)——C++实现判断栈的压入、弹出序列
题目给定两个序列,判断第二个序列是否是第一个序列顺序压入时的弹出序列考察点栈 :栈规定的先入先出是指压入弹出的位置,而非元素压入弹出的时间解题思路添加一个辅助栈,顺序压入第一个序列元素,当栈顶元素与弹出序列的元素相同时,直接弹出,否知,一直压入,直至找到相同元素,若所元素压入完还为找到,即表示弹出序列不是压入序列的一种弹出方式。完整代码/*21-栈的压入、弹出序列*/#incl...
2019-08-26 16:16:51 228
原创 剑指offer(20)——C++实现包含min函数的栈
题目定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。考察点栈解题思路首先要保证它始终是一个栈的结构,...
2019-08-23 15:39:19 200
原创 剑指offer(19)——C++实现顺时针打印矩阵
题目输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.考察点vector创建二维矩阵边界条件的考虑解题思路走一圈的流程可叙述为:第一步:从左到右压入元素。行保持...
2019-08-23 13:25:03 385
原创 剑指offer(18)——C++实现二叉树镜像
题目操作给定的二叉树,将其变换为源二叉树的镜像考察点二叉树二叉树遍历解题思路分析本质就是左右节点的交换。先前序遍历这棵树的每个结点,如果遍历到的结点有子结点,就交换它的两个子节点,当交换完所有的非叶子结点的左右子结点之后,就得到了树的镜像。完整代码/*18-二叉树的镜像*/#include<iostream>#include<stack>using...
2019-08-22 21:55:22 174
原创 剑指offer(17)——C++实现判断树的子树
题目输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)考察点树、指针、递归解题思路二叉树的遍历常用递归实现。先从A的根节点开始判断,若相同再去判断A的左右子树节点。完整代码/*17-树的子结构*/#include<iostream>using namespace std;//树的创建struct TreeNode { ...
2019-08-22 20:22:08 476
原创 链表
to be continue…创建单向链表struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};打印因为单向链表,只有后继指针,所以只能从前往后遍历,对于打印可以用队列实现 queue<ListNode*> res; Li...
2019-08-22 15:53:29 115
原创 剑指offer(16)——C++实现两个链表合并
题目输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。考察点链表解题思路递归实现,比较每个节点大小,将较小的放入新链表非递归,原理同上完整代码/*16-合并两个链表*/#include<iostream>#include<queue>using namespace std;struct ListNod...
2019-08-22 15:40:08 1753
原创 剑指offer(15)——C++实现反转单向链表
题目输入一个链表,反转链表后,输出新链表的表头。考察点链表、指针的编程能力思维的全面性和代码的鲁棒性解题思路避免链表断开后找不到后继节点,所以需要事先保存后继节点信息。设置三个指针,分别表示前继、当前、后继完整代码/*15-反转链表输出新链表头结点*/#include<iostream>using namespace std;struct ListNode...
2019-08-22 11:25:21 158
原创 剑指offer(14)——C++实现输出链表倒数第K个节点
题目输入一个链表,输出该链表中倒数第k个结点。考察点链表代码的鲁棒性解题思路一开始想法:遍历下链表,然后从后往前回溯K个节点,输出即可。但因给定链表为单链表,其节点只有从前往后的指针,故该想法行不通。输出倒数第K个节点,就是输出正数第N-K+1个,故先遍历一遍链表给出链表长度,再遍历到底n-k+1个节点,输出即可。只遍历一次的方法:设置两个指针,phead先走K-1步,然后p...
2019-08-19 18:39:19 454
原创 剑指offer(13)——C++实现数组中奇数排在偶数前
题目输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。考察点数组解题思路最容易想到的是:新建一个数组,先循环一遍原数组找出奇数放入新数组,再循环一遍原数组,找出偶数放入新数组,最后将新数组赋给原数组。完整代码/*13-实现数组中奇数排在偶数前*/#inclu...
2019-08-17 19:35:34 678
原创 剑指offer(12)——C++实现求解数值的整数次方
题目给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方考察点代码的完整性(写出来容易做细致难)对库函数的理解(库函数中pow函数用以实现乘方)解题思路很容易想到对base进行exponent次相乘,构造如下函数:double Power(double base, int exponent) { double r...
2019-08-17 16:13:05 202
原创 剑指offer(11)——C++实现求解二进制中1的个数
题目输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。考察点二进制与位运算位运算:与(&)、或(|)、异或(^)、左移(<<)、右移(>>).左移(<<)规则:右边空出的位用0填补;高位左移溢出则舍弃该高位;计算机中常用补码表示数据。左移一位相当于乘以2.右移(>>)规则:左边空出的位用0或者1填补;正数用0填...
2019-08-16 18:58:38 286
原创 剑指offer(10)——C++实现矩形覆盖
题目我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?考察点数学模型建立的能力递归与菲波那切数列解题思路(1)1 * 3方块 覆 盖3n区域:f(n) = f(n-1) + f(n - 3), (n > 3)(2) 1 4 方块 覆 盖4n区域:f(n) = f(n-1) + f(n - 4),(n ...
2019-08-15 20:18:00 415
原创 剑指offer(8)&(9)——C++实现青蛙跳台阶
题目正常跳:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。变态跳:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。考察点斐波那契数列参考剑指offer(7)递归的理解数学建模的能力解题思路正常跳:只有一个台阶时,只有一种跳法:n=1,...
2019-08-15 19:18:21 1269
原创 剑指offer(7)——C++实现菲波那切数列
题目大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。考察点菲波那切数列:f(x)={0,n=01,n=1f(n−1)+f(n−2),n>1f(x)=\left\{ \begin{aligned} &0, n=0 \\ &1, n=1 \\&f(n-1)+f(n-...
2019-08-15 17:48:54 492
原创 剑指offer(6)——C++实现查找旋转数组中的最小值
题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。考察点二分查找思考问题的全面性解题思路设定两个指针分别指向数组首尾,因为旋转不失一般性的会存在两个升序数组,找到这两个升序数组的分界点即可。完整代码/*06-查...
2019-08-15 14:09:17 217
原创 操作系统基础知识
一、操作系统四个特性并发性:同一段时间内多个程序执行共享性:系统中的资源被内存中多个并发执行的进/线程共同使用虚拟性:通过复用技术(如时分和空分)实现一个物理实体虚拟为多个异步性:进程是走走停停的方式执行,且以一种不可预知的速度推进二、进程2.1 多进程的组织形式PCB(process control block):记录进程信息的数据结构进程状态:就绪、执行、阻塞队列:就绪...
2019-08-14 16:26:26 132
原创 剑指offer(5)——C++实现两个栈完成队列的输入输出
题目两个栈实现队列的pop和push考察点队列与栈的概念解题思路stack1表示入队列,stack2表示出队列。完整代码/*05_stacktoqueue*/#include<iostream>#include<stack>using namespace std;class Solution{public: void push(int no...
2019-08-05 21:18:46 264
原创 剑指offer(4)——C++实现重建二叉树
题目给定二叉树的前序遍历和中序遍历结果,重建二叉树并输出头结点考查内容二叉树及其遍历的理解递归完整代码/*04_binarytree*/#include<iostream>#include<vector>using namespace std; struct TreeNode { int val; TreeNode *...
2019-08-05 18:22:30 133
原创 剑指offer(3)——C++实现链表的反向输出
题目描述给定一个链表,反向输出。考察知识链表的创建以及常规操作栈的使用解题思路先进去的后输出,自然想到是栈的特点,故使用栈来实现。递归的本质也是栈。完整代码/*03_printlist*/#include<iostream>#include<vector>#include<stack>using namespace std; str...
2019-08-05 15:12:58 479
原创 剑指offer(2)——C++实现替换空格
问题描述把字符串中每个空格用%20替换考察知识点字符串编程能力内存覆盖解题思路原字符串操作时,要考虑内存覆盖问题,即一个\0要被%,2,0三个字符替换。从后往前,遇到空格时,新字符串增加两个字符长度后用%20替换空格即可。完整C++代码/*02_replacespace*/#include<iostream>#include<string>usin...
2019-08-05 12:41:14 237
原创 剑指offer(1)——C++实现二维数组中的查找
/*二维数组查找*/#include<iostream>#include<vector>using namespace std;class Solution {public: bool Find(int target, vector<vector<int> > array) { int rows = array.size(); i...
2019-08-04 21:29:23 184
原创 计算机网络三种体系结构
文章目录计算机网络体系结构五层协议体系数据传输流程计算机网络体系结构 计算机网络体系结构 将OSI体系中的会话层、表示层、应用层合并为应用层后即为五层协议体系,将物理层与数据链路层再合并为网络接口层即为TCP/IP的四层协议体系,TCP/IP协议体系不严格遵循OSI分层概念,应用层可能会直接使用IP层或网络接口层。五层协议体系以五层协议体系为例,叙述各层功能:应用层:为特定应用程...
2019-08-03 17:06:38 5206
原创 计算机网络基础知识概述
该文章为此文的笔记版,后续会针对各个部分进行详细补充。文章目录一、物理层1.通信方式2.带通调制二、数据链路层1.基本问题2.信道分类3.信道复用技术4.CSMA/CD协议5.PPP协议(point to point protocol)6. MAC地址7.局域网8.以太网9.交换机10.虚拟局域网三、网络层1.IP数据报格式2.IP地址编址方式3.地址解析协议ARP4.网络控制报文协议ICMP5...
2019-08-01 15:52:12 276
原创 C++语言基础——C与C++的区别
文章目录C与C++的区别参考文章功能快捷键C与C++的区别对比项C 语言C++ 语言设计思想面向过程面向对象语法三种特性(封装、继承、多态)语法增加许多类型安全的功能(如强制类型转换)语法支持范式编程 (如模板类等)C++新增了一些关键字和变量例如bool型变量和 wchar_t型变量强制类型转换好处:禁止编译器对要做...
2019-07-27 21:25:17 416
原创 计算机网络基础(1)
文章目录小型机、大型机分类性能指标处理器的两种架构比较磁盘接口类型数据中心硬件路由优先级参考文献小型机、大型机分类X86服务器,与台式笔记本类似,采用CISC架构处理器小型机,一种介于PC服务器和大型机之间的高性能计算机,一般认为,传统小型机是指采用RISC、MIPS等专用处理器,主要支持UNIX操作系统的封闭、专用的计算机系统,所以又称RISC服务器或Unix服务器。大型机(main...
2019-07-23 16:46:25 184
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人