自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 静态链表

用数组描述的链表称为静态链表。 C语言中的静态链表的表现形式是结构体数组,结构体变量包括数据域data与游标cur。 这种存储结构,需要预先分配一个较大的空间,但在作为线性表的插入和删除操作时不需移动元素,仅需修改指针,故仍具有链式存储结构的主要优点。#ifndef _STATICLIST_H_ #define _STATICLIST_H_#include<iostream&g...

2018-04-14 16:21:37 1490 1

原创 插入排序

//插入排序头文件 Sort.h#pragma once#define T int#define MAXSIZE 20typedef T Sqlist[MAXSIZE];void Swap(T *a, T *b){ T tmp = *a; *a = *b; *b = tmp;}//直接插入排序void InsertSort(Sqlist &...

2018-04-14 16:10:15 197

原创 空间复杂度 时间复杂度

时间复杂度 算法中基本操作重复执行的次数是问题规模n的某个函数f(n),分析f(n)随n的变化情况并确定T(n)的数量级,用”O”表示数量级,来给出算法的时间复杂度。 T(n) = O(f(n)) 该式表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称为算法的渐进时间复杂度,简称时间复杂度。时间复杂度的分析方法 1.时间复杂度就是函数中基本操作所执行的次数...

2018-04-06 14:09:37 390

原创 数据链路层(一)

数据链路层属于计算机网络的低层,它使用的信道主要有两种类型:点对点信道,广播信道。使用点对点信道的数据链路层 数据链路和帧: 链路就是从一个结点到相邻结点的一段物理线路,中间没有其他结点。链路只是一条路径的组成部分。 数据链路除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。把实现这些协议的硬件和软件加到链路上,就构成了数据链路。一般的适配器都包含了数据链路层和物...

2018-04-05 21:04:01 349

原创 物理层

物理层的主要任务就是确定与传输媒体的接口有关的一些特性,如机械特性(接线器的形状和尺寸、引脚数目和排列等)、电气特性(接口电缆个条线上出现的电压范围)、功能特性(某条线上某一电平出现的意义)和过程特性(不同功能的各种可能事件的出现顺序)。 数据在计算机内部多采用并行传输的方式,但数据在通信线路上的传输方式一般是串行传输,即逐个比特按照时间顺序传输,因此物理层还要完成传输方式的转换。数据通信系...

2018-04-05 18:09:20 692

原创 计算机网络基本概念

互联网的两个重要基本特点:连通性和共享。计算机网络:由若干结点和连接这些结点的链路组成。网络之间可以通过路由连接起来,构成一个覆盖范围更大的网络,称为互连网,也称为“网络的网络”。网络把许多计算机连接在一起,而互连网则把许多网络通过路由器连接在一起,与网络连接在一起的计算机称为主机。internet与Internet的区别:小写字母i开头的internet(互连网)是一个通用名词,它泛指由...

2018-04-05 12:19:50 1299

原创 const关键字

const关键字的作用: 1. 可以定义const常量,具有不可变性 2. 便于进行类型检查 3. 保护被修饰的东西,防止意外修改 4. 为函数重载提供了参考void fun(int i){}void fun(int i)const{}//是上面函数的重载5.可以节省空间,避免不必要的内存分配const A 定义一个常量, 声明的同时必须进行初始化,一旦完成,值将...

2018-03-25 16:45:19 208

原创 柔性数组

一、什么是柔性数组 柔性数组是数组大小待定的数组,C语言中结构体的最后一个元素可以使一个大小未知的数组。 二、柔性数组的用途 是为了满足需要变长度的结构体和使用数组时内存的冗余以及数组越界问题。 三、 用法 在结构体的最后,申明一个长度为空的数组,即可使得该结构体是可变长的。因为对编译器来说,此时长度为0的数组并不占用空间,因为数组名本身就不占空间,它...

2018-03-25 15:06:49 256

原创 结构体--字节对齐

一、字节对齐目的及原因 1.目的:为提高程序的性能 2.原因:为访问未对齐的内存,处理器需要做两次内存访问,而对于对齐的内存仅需要访问一次。 二、字节对齐要区分的四个概念 1.基本数据类型的自身对齐值:(以32位x86机器为例) char型:1字节 short型:2字节 int型、float型:4字节 double型:8字节 2.程序指定对齐值:#pra...

2018-03-25 14:32:03 583

原创 & | ^ ~ >> 和 <<运算符

一、按位与运算符(&) 将两个运算的数按照二进制位进行“与”运算。 规则: 0&0=0 0&1=0 1&0=0 1&1=1 两位同时为1结果才为1,,否则为0 注意: 负数按补码的形式参加按位与运算。 补码 = 反码 + 1 与运算的特殊用途: 1. 清零。将一个数的二进制形式与一个各位都为0的数进行与运算,结果为0. 2. 可以取一个数

2017-08-08 09:54:47 1089

原创 Linux 进程

进程是操作系统资源管理的最小单位。进程的概念: 进程是操作系统资源分配的基本单位。进程和程序的区别在于进程是动态的,程序是静态的,进程是运行中的程序,程序是保存在硬盘上的可执行的代码。进程内部又划分了许多线程,线程在进程内部,它是比进程更小的能独立运行的基本单位,线程基本上不拥有系统资源,它与同属于一个进程的其他线程共享进程拥有的全部资源。进程在运行过程中拥有独立的内存单元,其内部的线程共享这些内

2017-08-06 12:01:16 361

原创 Linux 文件的输入输出

文件描述符是一个非负整数,在读写一个文件前,先调用open或者creat函数打开文件,成功返回文件描述符。文件描述符的范围在0~NR_OPEN之间,Linux中的NR_OPEN为255,说明每个程序最多只能打开256个文件。文件描述符0代表标准输入文件,1代表标准输出文件,2代表标准错误输出。一、 文件的创建与打开 1. open函数 函数原型: int open(const char *pa

2017-08-06 10:20:19 444

原创 STL(1)

一、 STL的四种基本组件 1. 容器(container) 容器是包含容纳一组元素的对象。容器类库包括7种基本容器:向量(vector),双端队列(deque),列表(list),集合(set),多重集合(multiset),映射(map),多重映射(multimap)。 其中,向量,双端队列,列表属于顺序容器,而映射和集合属于关联容器。 2. 迭代器(iterator)

2017-08-03 16:00:13 421

原创 单链表中的排序和逆置问题

单链表的排序问题:class Node //结点类{public: Node():next(NULL){} Node(int n,Node *p = NULL):value(n),next(p){} int value; Node *next;};class List{public: List(); ~List(); void S

2017-08-01 22:39:26 405

原创 多态

一、多态 多态是指同样的消息被不同类型的对象接收时导致不同的行为。消息是指对类的成员函数的调用,不同的行为是指不同的实现,即调用了不同的函数。 二、多态的实现 从实现的角度可以划分两类:即编译时的多态和运行时的多态。 编译时的多态是在编译的过程中确定了同名操作的具体操作对象,运行时的多态则是在运行过程中才会动态的确定操作所针对的具体对象。这种确定操作的

2017-07-28 11:13:16 317

原创 有关多继承的问题

一、多继承即一个子类有多个父类,它继承了多个父类的特性。 但多继承中会存在一个问题:即当某类的部分或全部直接基类是从另一个共同基类派生而来时, 在这些直接基类中从上一级共同基类继承而来的成员就拥有相同的名称,在派生类的对象中,这些同名的数据成员在内存中同时拥有多个副本,同一个函数名会有多个映射。这就是所谓的菱形继承问题(下面会给出图形),即A是B和C的直接基类,而D又继承了B和C。解

2017-07-28 09:44:05 877

原创 继承与派生(1)

类的继承是新类从已有类那里得到已有的特性,而从已有类产生新类的过程就是类的派生。原有的类称为基类或父类,产生的新类称为派生类或者子类。派生类的定义 C++中派生类的一般定义语法为: class 派生类名 : 继承方式 基类名1, 继承方式 基类名2, …..继承方式 基类名n { 派生类成员声明; }; 一个派生类可以同时有多个基类,称为多继承,一个派

2017-07-25 19:38:51 581

原创 数组与指针

指针是一直困扰我的问题,下来就今天所学的知识结合做题来记录下自己对指针与数组之间联系的理解,如有错误,请高手指出。下面两道是课堂上老师给出的题目:题目一:char *c[] = { "ENTER", "NEW", "POINT", "FIRST" }; char **cp[] = { c+3, c+2, c+1, c }; char ***cpp = cp; int main(void)

2017-07-24 21:42:54 236

原创 运算符重载(C++)2

接着上次的运算符重载: 先给出以下代码用于引出后面的运算符重载函数:class STR{public: STR(char *str= "") //构造函数 { m_str = new char[strlen(str)+1]; strcpy(m_str, str); } STR(char c) //构造函数 {

2017-07-21 10:54:01 285

原创 运算符重载(C++)1

面向对象程序设计的特点:抽象,封装,继承,多态。 A) 抽象是指对具体问题 (对象)进行概括,抽出一类对象的公共性质并加以描述的过程。一个问题的抽象应包括数据抽象(描述某类对象的性质或状态)和行为抽象(某类对象的共同行为或功能特征)。 比如时钟类的抽象: 数据抽象: int hour, int minute, int second 功能抽象:showTime(), setTime() B)

2017-07-20 14:59:29 338

原创 链式队列

我们已经知道,队列是操作受限的线性表,队列有队头和队尾,插入元素的一端称为队尾,删除元素的一端称为队头。 链式队列的队头指针指向队列的当前队头结点位置,队尾指针指向队列的当前队尾结点位置。对于不带头结点的链式队列,出队列时可以直接删除队头指针所指的结点,因此链式队列,没有头结点更方便。一个不带头结点、队列中有数据元素a0,a1,……,an-1的链式队列结构如下图所示: 以下是链式队列的相关操

2017-05-11 23:38:53 439

原创 顺序队列

队列也是一种特殊的线性表,队列的数据元素及数据元素间的逻辑关系和线性表完全相同,其差别是:线性表允许在任意位置插入和删除数据元素,而队列只允许在其一端进行插入操作,在其另一端进行删除操作。 队列中,允许进行插入操作的一端称为队尾,允许进行删除操作的一端称作队头。插入操作称为入队,删除操作称为出队。 根据队列的定义,每次入队的数据元素都放在原来的队尾的数据元素之后成为新的队尾元素,每次出队的数据元

2017-05-10 22:48:20 419

原创 顺序栈

栈可以看做受限的顺序表,它的插入与删除只能在表尾进行,将表尾称为栈顶,表头称为栈底。不含元素的空表称为空栈。根据栈的定义可以知道栈的修改遵循后进先出的原则。 下面给出顺序栈的相关操作:#include<stdio.h>#include<malloc.h>typedef int ElemType;#define INIT_SIZE 10#define INC_SIZE 5typedef s

2017-05-07 18:56:47 271

原创 进程控制

Linux进程Linux是一个多进程多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机;多任务是指Linux可以同时执行几个任务,Linux系统的一个重要特点就是可以同时启动多个进程。根据操作系统的定义:进程简单地讲就是操作系统资源管理的最小单位。进程的概念 进程是操作系统资源分配的基本单位。要了解进程就需要将其与程序的概念区分开,下面详细介绍: **程序:二进制文件,在磁盘上,不占

2017-05-06 19:48:16 325

原创 单链表的实现及其操作

单链表中,构成链表的结点只有一个指向直接后继结点的指针域。 1. 单链表的表示方法 2. 单链表中每个结点的结构如图所示 或者如下形式 单链表有带头结点和不带头结点两种结构。把指向单链表的指针称作头指针,头指针所指的不存放数据元素的第一个结点称作头结点。存放第一个数据元素的结点称作第一个数据元素的结点。第一个数据元素结点在带头结点的单链表中是链表中的第

2017-04-25 13:33:57 463

原创 线性表的实现及其基本操作

线性表的定义 线性表是最简单最常用的一种数据结构,它是一种能在任意位置进行插入和删除数据元素操作的、由n(n>=0)个相同数据元素组成的线性结构。线性表的抽象数据类型 数据集合 线性表的数据集合可以表示为a0, a1, a2, a3, ……, an-1,每个数据元素的数据类型都是抽象数据元素的数据类型ElemType。 操作集合(在此仅罗列一部分,详细内容请看代码块) a. 初始化

2017-04-24 23:26:29 3662

原创 数据结构基础

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 根据数据元素之间关系的不同特性,有以下四类基本结构:集合、线性结构、树形结构、图形结构或网状结构。这四种结构描述的是元素之间的逻辑关系,因此叫做逻辑结构。 数据结构在计算机中的表示(又称映像)称为数据的物理结构,又称存储结构。数据元素之间的关系在计算机中有两种不同的表示方法:顺序映像和非顺序映像,由此可以得到两种不同的存储

2017-04-24 22:55:04 300

原创 浅谈 指针数组&数组指针 指针函数 函数指针

很多人都说指针是C语言的精华,指针可以与数组、函数结合起来,形成指针数组,数组指针,指针函数,函数指针。可以看出,这四个名词两两对应,只是前后换了顺序而已,但是在本质上是有区别的。下面一起来研究一下它们。    首先,我们对指针和数组之间的关系进行研究。我们先理解,对于一个一维数组来说,我们可以定义一个一级指针来保存其数组名内的值,这是没有问题的。那么,如果有一个二维数组,我们定义一个二级指针

2017-03-26 13:44:24 346

原创 宏定义的作用

一、替换作用          #define  PI  3.14     即将PI替换成3.14,请看下面两幅图片:     二、宏定义可以替换简单函数,在某种情况下会忽略类型,采用宏定义替换简单函数会减少时间复杂度。下面给出例子。      在程序的第二行宏定义了一个求最小值的函数,并在主函数中调用,可以注意到,a,b为整型,c,d

2017-03-25 12:32:38 3439

原创 gcc编译器的使用

今天逛了逛校园招聘会,发现市场对软件开发,IOS开发,Web前端,嵌入式开发等技术的需求量还是挺大的,作为一名即将要面临找工作的我来说,这是一种提醒,而正在学习Linux的我更有必要在努力将这门语言学好的同时更要不断地学习其他知识。从招聘会回来,想着要好好了解下这些从事这些职业需要的知识与技术。因为最近在学Linux,所以就先从学好Linux开始吧。 Linux平台下的嵌入式开发领域,gcc是用的

2017-03-24 23:54:54 373

原创 Linux的常用命令

一、路径的两种表示方法         一种是从根目录开始,称为绝对路径,一种是从当前目录开始,称为相对路径。二、Linux中的常用命令     1.  查看当前目录命令 pwd         执行pwd命令,系统显示当前目录     2. 切换目录  cd         cd +空格+目录名   切换到该目录下         cd +空格+ .        

2017-03-12 20:26:23 268

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除