- 博客(35)
- 收藏
- 关注
原创 数据结构-树
树是n(n>=0)个结点的有限集。当n = 0时,称为空树。在任意一棵非空树中应满足:1.有且仅有一个特定的称为根的结点。2.当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每个集合本身又是一棵树,并且称为根的子树。显然,树的定义是递归的,即在树的定义中又用到了自身,树是一种递归的数据结构。树作为一种逻辑结构,同时也是一种分层结构,具有以下两个特点:1.树的根结点没有前驱,除根结点外的所有结点有且只有一个前驱。2.树中所有结点可以有零个或多个后继。
2024-05-19 21:48:30 330
原创 数据结构-队列
队首指针进1:Q->front = (Q->front + 1) %后,再前进一个位置就自动到0,这可以利用除法取余运算(%)来实现。队尾指针进1:Q->rear = (Q->rear + 1) %(First In First Out)的线性表,简称FIFO。进队操作:队不满时,先送值到队尾元素,再将队尾指针加1。出队操作:队不空时,先取队头元素值,再将队头指针加1。队列长度:(Q->rear - Q->front +初始时:Q->front = Q->rear=0。,允许删除的一端称为队头。
2024-05-19 21:41:58 506 1
原创 数据结构-单链表
它由一系列节点组成,每个节点都包含数据域和指向下一节点的指针,链表的节点不需要在内存中连续存放,他们通过指针相互链接,形成一个线性序列。 优点:动态大小、插入删除效率高、内存利用率高、内存利用率高。 缺点:不支持随机访问、额外的指针空间开销 创建、插入、删除、查找、遍历、销毁、合并、删除重复、打印链表等 typedef int datatype; typedef struct node datatype da
2024-05-19 21:19:18 368
原创 线性表之顺序表
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。3)其它的每个元素ai有且仅有一个直接前驱ai-1和一个直接后继ai+1。//指向最后一个数据,即有序数组的个数。•逻辑上相邻的元素 ai,ai+1,其存储位置也是相邻的。•对数据元素ai的存取为随机存取或按地址存取。•对表的插入和删除等运算的时间复杂度较差。1) 对非空表,a0是表头,无前驱;4.删除特定位置的内容。6.定位某个内容的位置。的数据元素的有限序列。6.任意位置插入内容。
2024-04-02 21:29:53 492
原创 什么是数据结构
1.数据结构研究计算机数据间的关系2.包括数据的逻辑结构和储存结构及其操作数据的逻辑结构:表示数据运算之间的抽象关系按每个元素可能具有的直接前趋数和后继数将逻辑结构分为“线性结构”和“非线性结构”两大类数据的储存结构:逻辑结构在计算机中的具体实现方法。
2024-03-31 21:09:30 244
原创 GDB调试工具
GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。一般来说,GDB主要帮助你完成下面四个方面的功能:1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序(按着自己的想法运行)。2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3、当程序被停住时,可以检查此时你的程序中所发生的事。4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。
2024-03-31 20:56:22 278
原创 动态内存使用
内存泄漏(memory leak):是指申请的内存空间使用完毕之后未回收。一次内存泄露危害可以忽略,但若一直泄漏,无论有多少内存,迟早都会被占用光,最终导致程序crash。(因此,开发中我们要尽量避免内存泄漏的出现)内存溢出(out of memory):是指程序在申请内存时,没有足够的内存空间供其使用。通俗理解就是内存不够用了,通常在运行大型应用或游戏时,应用或游戏所需要的内存远远超出了你主机内安装的内存所承受大小,就叫内存溢出。最终导致机器重启或者程序crash。
2024-03-29 19:10:25 229
原创 Makefile条件判断和函数使用
功能:查找中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式,如果匹配的话,则以替换。如果中也包含%,那么,中的这个%将是中的那个%所代表的字串。示例:$(patsubst %.c,%.o,x.c.c bar.c)把字串x.c.c bar.c符合模式%.c的单词替换成%.o,返回结果是x.c.obar.o。”(单字符)、“*”(多字符)等。
2024-03-29 16:30:51 260
原创 Makefile用法及变量
自动化编译”:一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。提升编译效率:再次编译,只编译修改的文件。
2024-03-29 16:21:53 319
原创 linux shell命令(进程管理、用户管理)
1.进程是一个实体。数据区域存储变量和进程执行期间使用的动态分配的内存;kill命令向指定的进程发出一个信号signal,在默认情况下,kill命令向指定进程发出信号15,正常情下,将杀死那些不捕捉或不忽略这个信号的进程。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。使用方法:deluser --remove-home user1删除用户user1的同时删除用户的工作目录。用户登陆时,系统查询这个文件,确定用户的UID并验证用户口令。
2024-03-28 19:52:09 388
原创 gcc编译工具
GCC 原名为 GNU C 语言编译器(GNU C Compiler),只能处理 C 语言。但其很快扩展,变得可处理 C++,后来又扩展为能够支持更多编程语言。
2024-03-28 18:31:48 308
原创 C 内存管理
存放函数体的二进制代码,有操作系统进行管理(cpu执行的机器指令,: 由程序员分配和释放,若程序员不释放程序结束时由操作系统回收。(全局静态区):存放全局变量和静态变量以及常量(包括const)不同区域存放的数据,赋予不同的生命周期,带来了更大的灵活编程。:由编译器自动分配释放,存放函教的参数值,局部变量等。
2024-03-27 21:16:57 163
原创 C语言共用体和枚举
在c语言中,不同数据类型可以使用共同的存储区域,这种数据构造类型称为共用体,有称联合体。与结构体相识,本质不同是在使用内存的方式上。语法:union 共用体名共用体成员列表变量的赋值:1.union 共用体名 变量名 2.union 共用体民 变量名 = {成员值} 3.定义共用体时顺便赋值。2.共用体大小union unint a;char b;打印结果是4.就看定义的数据类型最大的那个,且必须可以整除数据类型小的。
2024-03-27 21:04:41 348
原创 结构体嵌套、大小及位域
char d 1 4 1 9 (因为8,9只占2个位置,和4个位置(int)相差2个位置,所以需要补2个位置,也就是补10,11,所以最后大小位为12)字节对齐主要是针对结构体而言的,通常编译器会自动对其成员变量进行对齐,以提高数据存取的效率;2.struct位域结构体名 变量名= {成员1值,成员2值..}位域列表的形式:类型说明符 位域名:位域长度。
2024-03-27 16:00:38 1125
原创 NFS服务器搭建和使用
nfs(Network File System)即网络文件系统,其基于UDP/IP使用nfs能够在不同计算机之间通过网络进行文件共享,能使使用者访问网络上其它计算机中的文件就像在访问自己的计算机一样。:共享的目录;:不限定客户端;rw:共享目录可读可写;sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;:来访的root用户保持root帐号权限;
2024-03-26 22:36:18 322
原创 TFTP服务搭建及使用
TFTP(Trivial File Transfer Protocol)即简单文件传输协议是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69TFTP_DIRECTORY="/home/linux/tftpboot" //我们设定的TFTP根目录TFTP_ADDRESS="0.0.0.0:69" //ip和端口号TFTP_OPTIONS="-c -l -s" //TFTP启动参数。
2024-03-26 21:54:40 708
原创 linux shell命令(文件搜索、处理、压缩解压)
对一个已存在的链接文件执行移动或删除操作,有可能导致链接的断开。假如删除目标文件后,重新创建一个同名文件,软链接将恢复,硬链接不再有效,因为文件的inode已经改变。tar命令符号模式的一般语法格式为:tar[ -t|-x | -r | -c | -v | -f | -j | -z ] tarfile filelist。cat命令用于显示整个文件的内容,它将文件的内容一次性输出到终端窗口。-C除了显示符合样式的那一行之外,并显示该行之前后的内容。-B除了显示符合样式的那一行之外,并显示该行之前的内容。
2024-03-24 20:06:06 1930 1
原创 shell命令(权限、输入输出)
英文单词shell翻译为“贝壳”,Linux 中的 shell 就是 Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互。shell概述:1.Shell 是一个命令行解释器2.Shell 是指一种应用程序3.Shell 是指一种应用程序4.Shell 是指一种应用程序查看当前系统shell:cat/etc/shells查看当前是什么shell:echo $SHELL一些简单命令:关机:sudo shutdown -h now。
2024-03-23 14:41:12 731 1
原创 软件包管理
1.二进制软件包( Binary Packages ):它包含可执行文件、库文件。2.源码包( Source Packages ):包含软件源代码、版本修改说明。类型:二进制软件包(deb)和源码软件包(deb-src)、配置文件、 man/info 页面、版权声明和其它文档。1.修改 /etc/apt/sources.list。工作原理:Ubuntu采用集中式的软件仓库机制。软件包名称 软件版本 修订版本 体系架构。file命令查看软件包类型。、构建指令及编译工具等。2.图形界面更换软件源。
2024-03-23 14:17:49 377 1
原创 字符串函数strncpy strncat strncmp strnchr strstr(头文件<string.h>)
返回值: 返回指向str2中第一次出现的str1的指针,如果str2不是str1的一部分,则返回一个空指针。将str1字符串的第一个字符的ACSII值减去str2第一个字符的ACSII值(自左向右比较前n个字符,直到出现不同的字符或遇'\0'为止)返回值:str1=str2则返回0,str1>str2则返回大于0的值,str1
2024-03-22 15:07:47 333 1
原创 字符串函数
返回值如果传入的字符是大写字母,则返回该字母的小写形式;如果传入的字符不是大写字母,则原样返回该字符。strcmp(字符串1,字符串2);功能:比较两个字符串 比较规则:对两串从左向右逐个字符比较。strcpy(字符数组1,字符串2);功能:将字符串2,拷贝到字符数组1中去。strcat(字符数组1,字符数组2);如果给定的字符不是大写字母,则不对它做任何处理,也不会报错或者警告。函数声明 int toupper(int c);函数声明 int toupper(int c);strlen(字符数组);
2024-03-22 14:41:29 261 1
原创 变量存储类型
1.extern称为外部参照引用型,使用extern说明的变量是想引用在其它文件中函数体外部说明的变量。当你希望在一个文件中使用另一个文件中定义的全局变量时,需要在当前文件中使用extern进行变量的声明ü在当前文件中,它只是一个未定义的外部变量引用,实际定义在其它文件中。2.只要程序没结束,就不会随着说明它的程序段的结束而消失,它下次再调用该函数,该存储类型的变量不再重新说明,而且还保留上次调用存入的数值。•auto说明的变量只能在某个程序范围内使用,通常在函数体内或函数中的复合语句里。
2024-03-21 17:26:34 336 1
原创 指针函数的用法
定义:一个函数的返回值是指针即地址,就是指针函数 *()语句序列;返回地址strreturn str;return 0;注意:可返回的地址有四种情况:1.静态变量的地址 2.字符串常量的地址 3.堆上的地址4.主调函数中有效内存。
2024-03-20 21:16:13 133 1
原创 利用指针实现strcmp函数功能
strcmp是比较字符串中对应位置上的字符大小(ASCII码值大小),如果相同,就比较下一对,直到不同或者都遇到'\0'。
2024-03-19 21:47:18 565 1
原创 do while的一些用法
首先执行一次语句,然后再判断表达式是否为真,为真就继续执行,为假就停止。3.求最大公约数和最小公倍数。}while(表达式);1.求1到100的和。
2024-03-12 18:00:07 159 1
原创 break的用法
打印1到100的所有数,遇到第一个能被三整除的数值,停止打印。1.break的作用就是终止本次循环。2.打印100以内所有的素数。
2024-03-11 21:58:40 186
原创 continue用法
2.输入一个整数n,判断它是不是一个素数,若用户输入的不是整数,重新输入。的作用就是跳出本次循环,然后再重新判断循环条件,不会终止循环。1.打印1到100的所有数,其中能被3整除的数值不打印。
2024-03-11 21:37:41 440
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人