自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构-图的相关概念及实现

由于图的结构比较复杂,任意两个顶点之间都可能存在关系,因此用简单的顺序存储来表示图是不可能,而若使用多重链表的方式(即一个数据域多个指针域的结点来表示),这将会出现严重的空间浪费或操作不便。有向边:若从顶点Vi到Vj的边有方向,称这条边为有向边,也称为弧(Arc),用来表示,其中Vi称为弧尾(Tail),Vj称为弧头(Head)。图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。

2023-02-16 22:15:10 116

原创 Linux -系统相关命令示例

exec find 命令对匹配的文件执行该参数所给出的其他linux命令。功能描述:用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。-1 当服务器拥有多个cpou时,可以使用“1”来切换显示各个cpu的详细信息。进程实际使用内存 = 常驻内存(RES)- 共享内存 (SHR)*S:表示进程的状态“S”表示sleeping,“R”表示running。-name 按照文件名来查找(-iname不区分大小写)-type 按照类型查找(-iname不区分大小写)

2023-02-15 21:13:17 128

原创 Linux 文件相关命令及演示

more 目标文件(只能显示一个屏幕的文件,按‘回车键’向后翻看,不能向前翻看,按q退出)cat 目标文件(适用于查看小文件,大文件不能查看前面文件且只能显示结尾)5. less 目标文件(按上下键,可以向上翻也可以向下翻,q退出)more -n 目标文件(显示到n行,回车可往后翻看,q退出)8.tail 目标文件(显示文件最后10行,默认是10行)6.head 目标文件(显示文件前10行,默认是10行)7. head -n 目标文件(显示前n行)cat -n 目标文件(给每一行编号)

2023-02-14 21:13:00 102

原创 Linux常用命令及演示2

reboot用于重启系统,poweroff用于关闭系统,默认只能使用root管理员来重启或关闭系统,在生产环境中请谨慎使用。通过date -s命令可以修改系统当前时间,我们将时间设置成2017年9月1日8点30分。通过上述命令查询的PID值再配合kill命令,可以强制停止相关进程。使用$变量的方式可以提取变量SHELL的值,并输出到屏幕上。用于在终端输出字符串或变量提取后的值。wget命令用于在终端中下载网络文件。用于查询某个指定服务进程的PID值。用于显示设置系统的时间或日期。

2023-02-13 22:22:01 79

原创 Linux常用命令及演示

2. cd命令:这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。5、mv命令:该命令用于移动文件、目录或更名,move之意,它的常用参数如下:-f 如果目标文件已经存在,不会询问而直接覆盖。-rwxr-xr-x (755) – 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。-rw-rw-rw- (666) – 所有用户都有文件读、写权限。-rwx------ (700) – 只有属主有读、写、执行权限。

2023-02-12 23:46:16 406

原创 Linux常用命令

该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等,它的简单语法为。这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。-tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、注:该命令可以把一个文件或多个文件一次移动一个文件夹中,但是最后一个目标文件一定要是“目录”。

2023-02-09 21:58:02 91

原创 分治算法及归并排序

分治法,字面意思是“分而治之”,就是把一个复杂的1问题分成两个或多个相同或相似的子问题,再把子问题分成更小的子问题直到最后子问题可以简单地直接求解,原问题的解即子问题的解的合并,这个思想是很多高效算法的基础,例如排序算法(快速排序,归并排序),傅里叶变换(快速傅里叶变换)等。对于一个规模为n的问题,若该问题可以容易的解决(比如规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解决这些子问题,然后将各个子问题的解合并得到原问题的解。

2023-02-08 23:25:44 85

原创 查找算法的实现

在一个升序或降序的数据域中,对我们要查找的数k,逐步确定k所在空间,每一次查找都将搜索空间减少一半(折半),直到查找成功或失败为止。查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;哈希函数类似于数学中的一次函数,我们给它传递一个元素,它反馈给我们一个结果值,这个值就是该元素对应的索引,也就是存储到哈希表中的位置。每个存储到哈希表中的元素,都配有一个唯一的标识(又称“索引”或者“键”),用户想查找哪个元素,凭借该元素对应的标识就可以直接找到它,无需遍历整个哈希表。

2023-02-07 20:11:46 72

原创 动态规划算法及其应用题

首先是拆分问题,把问题划分成一步一步这样就可以通过递推或者递归来实现.关键就是这个步骤,动态规划有一类问题就是从后往前推到,有时候我们很容易知道:如果只有一种情况时,最佳的选择应该怎么做.然后根据这个最佳选择往前一步推导,得到前一步的最佳选择然后就是定义问题状态和状态之间的关系,将前面拆分的步骤之间的关系,用一种量化的形式表现出来,类似于高中学的推导公式,因为这种式子很容易用程序写出来,也可以说对程序比较亲和(也就是最后所说的状态转移方程式)。如果有满足条件的选择,则此背包有解,否则此背包问题无解。

2023-02-06 23:06:48 147

原创 使用C语言实现几种排序算法

一趟排序的过程,将相邻的两个元素进行比较,如果前一个比后一个大,则将两个元素交换–将最大的元素交换到整个数据的最后。(1)将数据分为两部分,前一段是已经有序的数据(初始时,前一段数据只有一个),后一段是无序数据。(2)从无序数据中拿一个数据(拿左边的第一个数据),插入到前一段的有序数据中,并且使其依旧有序。(1)先在数据中找一个基准数据:找待排序数据序列的第一个,随机数,三位数取中。(2)将数据按照基准数据分成两部分,前一段都比基准小,后一段都比基准大。(3)重复上述过程,直到无序数据段没有数据。

2023-02-03 23:37:26 57

原创 利用栈结构和回溯算法来解决八皇后问题

我们可以每一行(或每一列)依次放一个棋子,之后在下一行(或下一列)再放棋子的时候需要比较之前已经放了的棋子是否会有冲突(被其他皇后攻击),依次放棋子直至完成八个棋子的存放,这需要用到递归和回溯的方法,并运用栈结构。八皇后问题起源于国际象棋,在国际象棋中,皇后的势力范围是它所在的行、列以及对角线在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。5.然后回头继续第一个皇后放第二列,后面继续循环执行 1,2,3,4的步骤。

2023-02-02 23:13:49 265 1

原创 利用队列来解决迷宫最短路径问题

将所有方向用dir数组装起来,将顶点加入队列,进入循环,循环出口:为x,y坐标等于设置的出口坐标,每次将各个方位的坐标加入队列中并做上标记(防止重复走,减少计算量),最先到达循环出口的即为最小路径。将起点放入队列,从队列中拿出队列首部数据进行第一次循环,具体及起点向下能走吗,如果能,将起点向下的这一位置放入队列尾部,如果不能,起点能向右走吗,如果能…基本思路为从迷宫入口(1,1)出发,向四周搜索,记下所有一次能通达的坐标p11,p12,…直至达到出口点(m,n),然后从出口点沿搜索路径回溯直至入口。

2023-02-01 22:03:57 730

原创 C语言实现队列数据结构

首先是队列的结点设计,可以设计出两个结构体,一个结构体 Node 表示结点,其中包含有 data 域和 next 指针,其中 data 表示数据,其可以是简单的类型,也可以是复杂的结构体。next 指针表示,下一个的指针,其指向下一个结点,通过 next 指针将各个结点链接。在队列的最前端称为队头,在队列的末尾称为队尾。只允许在队的前端进行删除的操作又称作出队,在表的后端进行插入的操作,称为入队,符合先进先出的特性。和栈一样,队列也可以有两种实现方式:数组实现的顺序队列和链表实现的链式队列。

2023-01-31 23:31:05 99

原创 利用栈结构来实现计算器功能

我们的要求是,优先级高的要先进行运算,后缀表达式是只有在遇到运算符时才弹出两个数进行运算,那么我们要做的就是把优先级最高的最先弹出,在有加减乘除和括号的运算中,括号的优先级无疑是最高的,所以遇到右括号时就可以直接弹出直到遇到左括号,遇到其他符号时就先存放在栈中,然后,当一个优先级低的元素要进栈时,优先级较高的运算符就必须先弹出来进行运算。到最后栈中还剩下的运算符,由于后面没有运算符了,而栈中的运算符本来就是按照优先顺序排序的,所以就直接按顺序弹出。当遇见右括号时,我们就把栈的元素弹出,直到遇见一个左括号。

2023-01-31 00:05:41 508

原创 C语言实现栈结构

采用链式存储的栈称为链栈,链栈的优点是便于多个栈共享存储空间和提高其效率,且不存在栈满上溢的情况。通常采用单链表实现,并规定所有操作都是在单链表的表头进行的。栈允许插入和删除操作的一端称为栈顶(Top),而另一端则称为栈底(Bottom),栈底是固定的,在还有其他元素时不能进行操作,而不含任何元素的栈称为空栈。栈的插入操作称为入栈(Push),栈的删除操作称为出栈(Pop)。栈是一种特殊的线性表结构,限定仅在表尾进行插入和删除操作,并且具有先进后出的特性。接下来用C语言来分别实现顺序栈结构和链栈结构。

2023-01-29 23:08:55 75

原创 C语言实现链表数据结构并解决约瑟夫问题

在约瑟夫问题中,每个人都是一个结点,而报数到哪个结点,那么这个结点就会被删除。链表是靠结点的next指针一层一层连接的,在计算机的底层,每一个结点所在的内存位置是不同的(每new一个结点,计算机就会随机分配一个地址),只能靠next指针一点一点的去找到我们想要的元素。为了表示每个数据元素ai与其直接后继元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置),这两部分信息组成数据元素ai的存储映像,称为结点。查找链表对应位置元素。

2023-01-19 01:32:27 212

原创 面向对象设计原则

类的职责是由该类的对象在系统中的角色所决定的。举例来讲,教学管理系统中,老师就代表着一种角色,这个角色决定老师的职责就是教学。而要完成教学的职责,老师需要讲课、批改作业,而讲课、批改作业的行为就相当于我们在程序中类的方法,类的方法和属性就是为了完成这个职责而设置的。一个类承担的责任越多,它被重用的可能性就越小。如果一个类承担了太多的责任,则相当于将这些责任耦合在一起。当其中一项职责发生变化时,可能会影响其他职责的运作,所以一个类中应该是一组相关性很高的函数、数据的封装。

2023-01-16 19:42:32 176

原创 Erlang程序编译参数

其中参数-s make all表示在当前目录下查找 Emakefile 文件,并根据其配置内容进行编译, -s c q相当于在erlang shell中执行q()来退出shell。在终端中使用erl -noshell -s hello start -s init stop, 可以直接调用hello模块中的start函数。这种方法和第一种差不多,区别只是在于第一种方法是在erlang shell中使用,而第二种方法在命令行中使用。最后使用命令行执行erl -s make all -s c q进行编译,

2023-01-16 00:21:09 275

原创 堆和栈的概念

在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。在之前的博客里已经说过了进程和线程的概念,我们都知道,进程是程序在数据集上动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,而一个进程至少要有一个线程(主线程),进程是一个资源单位,而线程是它的一部分。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。

2023-01-14 18:03:46 748

原创 进程与线程

在操作系统里,会同时存在若干进程,而对于单核CPU,这些进程其实是一个一个的轮流执行的,只是由于CPU的处理速度过快,以至于在使用者看来这些进程就是同时执行的,而对于多核CPU,就相当于有多个这么厉害的厨师,对于操作系统非常繁琐的进程处理也是游刃有余。在计算机和操作系统中,进程和线程是很常见的概念,那么它们到底是什么,进程和线程之间的区别是什么,而程序又和进程有什么关系,我用这篇文章来简单阐述总结一下。动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;

2023-01-12 23:41:09 69

原创 端口的认识以及常用端口的介绍

在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据报根据其目的主机的ip地址来进行互联网络中的路由选择。但是,如果只有ip,是无法定位到进程的。通信的发起者不仅需要提供IP地址,还需要提供端口。只有这样,服务器才能知道哪个进程做出响应。因此,数据包中不仅要有目标ip,还需要有端口号,用来确定需要什么服务。

2023-01-11 23:35:41 454

空空如也

空空如也

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

TA关注的人

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