图的定义图G由顶点集V和边集E组成,记为G=(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)集合。若V={$v_{1}$,$v_{2}$,…,$v_{n}$},则用|V|表述图G中顶点的个数,也称图G的阶,$E={(u,,v)|u\in V,v\in V }$,用|E|表示图G中边的条数注意:线性表可以是空表,树可以是空树,但是图不可以是空,即V一定是非空集,但一个图的边集可以为空集
有向图、无向图无向图若E是无向边(简称边)的有限集合时,则图G为无向图。边是顶点的无序对,记为$(v,w)$或$(w,v)$,因为$(v,w)$=$(w,v)$,其中v、w是顶点。可以说顶点v、w互为邻接点。边$(v,w)$依附于顶点w和v,或者说边$(v,w)$和顶点v、w相关联$G_{2}=(V_{2},E_{2})$$V_{2}$={$A,B,C,D,E$}$E_{2}$={$(A,B),(B,D),(B,E),(C,D)(C,E),(D,E)$}
有向图若E是有向边(也称弧)的有限集合 ...
并查集的逻辑结构集合:将各个元素划分为若干个互不相交的子集回顾:森林是多个互不相交的树的集合所以可以用互不相交的树来表示多个集合
并查集的存储结构本质上运用了树的双亲表示法
并查集的基本操作
查——Find: 确定一个指定元素的所属集合
并——Union: 将两个不相交的集合合并为一个
注:并查集是逻辑结构——集合的一种具体实现,只进行并和查两个基本操作
并查集的代码实现1234567#define SIZE 13int UFSets[SIZE];void Initial(int S[]){ for(int i=0;i<SIZE;i++){ S[i]=-1; }}
查123456int Find(int S[],int x){ while[S[x]>=0]{ x=S[x]; } return x;}
并12345void Union(int S[],int Root1,int Root2){ if(Root1==Ro ...
PHP基础以<?php开头,以?>结尾变量前加$,如定义变量$x打印echo函数
1234567<?php$my_name ="Bunny";function echo_name($name){ echo $name;}echo_name($my_name);?>
12345678<?php$x=1;$y=2;function calc($x,$y){ echo $x+$y;}calc($x,$y);?>
PHP面向对象OOP(面向对象程序设计):把事物封装成对象,然后操控对象完成各种行为
基础
类(Class):类是抽象的,是不具体的。例如新建一个名为Human的类,Human(人类)就是一个抽象的概念,是对世界上所有人的总称
对象(Object):具体的某个事物。对类进行实例化的一个实例123456789101112<?phpclass Person{//定义一个类 var $name ="李白";//定义成员变量(属性) ...
树树的基本概念$\emptyset$ 空树:结点数为0的树非空树的特性:
有且仅有一个根结点
没有后继的结点称为叶子结点(或终端节点)
有后继的结点称为分支结点(或非终端结点)
除了根结点外,任何一个结点都有且仅有一个前驱
树是n(n≥0)个结点的有限集合,n=0时,称为空树,这是一种特殊情况。在任意一棵非空树中应满足:
有且仅有一个特定的称为根的结点。
当n>1时,其余结点可分为m(m>0)个互不相交的有限集合 $T_{1}$,$T_{2}$..,$T_{m}$,其中每个集合本身又是一棵树,并且称为根结点的子树。
树是一种递归定义的数据结构
结点之间的关系描述
祖先结点
子孙结点
双亲结点(父结点)
孩子结点
兄弟结点
堂兄弟结点
两个结点之间的路径:只能从上往下
路径长度:经过了几条边
结点、树的属性描述
结点的层次(深度)——从上往下数(默认从1开始)
结点的高度——从下往上数
树的高度(深度)——总共多少层
结点的度——有几个孩子(分支)
树的度——各结点的度的最大值
有序树VS无序树
有序树——逻辑上看,树中结点的各子树从左至右是有 ...
CS学习
未读操作系统基础——LinuxLinux是开源的操作系统,定制性很强,有很多发行版,选择使用Kail Linux ,可以在清华大学开源软件镜像站下载具体操作在菜鸟教程学习在Linux中一切都是文件,在Linux里一切起源为/这个根目录。从/开始的路径称为绝对路径,知道绝对路径就可以精准定位文件。../形式的称为相对路径,.表示当前目录,..表示上一级目录。例如../load表示上一级目录load文件夹,../../load表示上上级目录下的load文件夹
重要的目录
/etc目录:存储系统文件。例如/etc/passwd
var目录:存储一些类似日志的东西
home目录:家目录,分隔每个用户的个人房间
root目录:root用户(系统根管理员用户)的单独房间
tmp目录:临时目录,存储一些杂七杂八的缓存内容
文件管理常用命令
pwd:查看当前在哪个目录
cd:加一个参数,会切换到指定目录
ls:列出指定目录下边有哪些文件,不指定参数的话默认当前文件夹
cat:打开指定文件
echo:打印字符
touch:创文件
可以在命令后加一个参数,例如ls /home同时可以用-开头 ...
开个新坑,看看能不能学下去吧本系列为参考B站up主黑兔由帝所做笔记
计算机基本原理计算机的分类粗略分为
个人设备(PC)
服务器
存储计算机需要存储数据,存储分为两种
外存:例如硬盘、光盘、u盘,特点是存储数据都比较慢(会被先放入内存,再由CPU处理),但是即使关机了,数据也还在,开机可以继续使用
内存:RAM(随机存储器),例如内存条,特点是存储容量小,存取速度极快,关机后数据消散写文档时需要保存就是因为需要将内存中的文档写入外存硬盘中
攻防领域的应用:无文件攻击:一段恶意代码不接触磁盘,只在内存中运行,那么常规扫描硬盘进行查杀的杀毒软件是没有效果的
在不同的操作系统中,在磁盘中删除文件的操作是不同的。在windows系统中,删除文件只是做了已删除的标记,让新数据可以覆盖到做了已删除标记的地方,如果没有被覆盖,那么还有可能恢复数据。
处理有了数据,由CPU(中央处理器)对数据进行处理。由于历史的遗留问题,处理器有很多架构,例如x86,arm,mips架构等,不同架构不能互通。跨平台只建立在有一个对应平台解释器的前提下。例如,在x86的计算机上写一段python代码可以 ...
字符串模式匹配的定义在主串中找出与模式串相同的子串,并返回其所在位置
朴素模式匹配算法思想主串长度为n,模式串长度为m将主串中所有与长度为m的子串与模式串一一比较 ,直到找到一个与模式串完全匹配的子串,或所有的子串都不匹配 (最多对比n-m+1个子串)若当前子串匹配失败,则主串指针i指向下一个子串的第一个位置,模式串指针j回到模式串的第一个位置i=i-j+2 j=1若j>T.length,则当前子串匹配成功,返回当前子串的第一个位置——i-T.length
代码1234567891011121314151617int Index(SString S,SString T){ int i=1,j=1; while(i<=S.length&&j<=T.length){ if(S.ch[i]==T.ch[j]){ i++; j++; } else { i=i-j+2; ...
串的定义串,即字符串(String),是由零个或者多个字符组成的有限序列。一般记为S=’$a_{1}$$a_{2}$···$a_{n}$’(n>=0)其中,S是串名,单引号括起来的字符序列是串的值;$a_{i}$可以是字母、数字或者其他字符;串中字符的个数n称为串的长度。n=0时的串称为空串(用$\emptyset$表示)
例:T=’iPhone 17 Pro Max?’
子串:串中任意个连续的字符组成的子序列
‘iPhone’,’Pro M’是串T的子串
主串:包含子串的串
T是子串’iPhone M’的主串
字符在主串的位置:字符在串中的序号
‘1’在T中的位置是8(第一次出现)
子串在主串的位置:子串的第一个字符在主串中的位置 (位序从1)
‘11 Pro’在T的位置是8
空串 VS 空格串:
M=’’ (空串)N=’ ‘ (空格串,由三个空格字符组成)
串 VS 线性表串是一种特殊的线性表,数据元素之间呈线性关系串的数据对象限定为字符集(如中文字符、英文字符、数 ...
CS学习
未读一维数组的储存结构C语言定义一维数组:ElemType a[10]各数组元素大小相同,且物理上连续存放数组元素a[i]的存放地址=LOC+i*sizeof(ELemType)(0<=i<=10)
二维数组的储存结构C语言定义二维数组:ElemType b[2][4]两种储存方式
行优先储存 M行N列的二维数组b[M][N],若按照行优先存储 则b[i][j]的存储地址=LOC+(i*N+j)*sizeof(ElemType)
列优先储存 M行N列的二维数组b[M][N],若按照列优先存储 则b[i][j]的存储地址=LOC+(i+j*M)*sizeof(ElemType)
普通矩阵的存储$\left(\begin{array}{cccccc}a_{1,1} & a_{1,2} & a_{1,3} & \cdots \cdots & a_{1, n-1} & a_{1, n} \\a_{2,1} & a_{2,2} & a_{2,3} & \cdots ...

















