自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 复杂网络入门详解 适用于初学者。超详细~~

复杂网络知识快速入门,适用于初学者。超详细的名词解释~~

2022-05-01 13:53:04 7749

原创 通过递归和非递归(即栈的方式)两种方法实现扩展二叉树 数据结构 简单易懂 超详细

//本程序采用扩展二叉树的存储方式、//和依据该存储结构写的建立扩展二叉树的方式和前序的递归的遍历方式//和非递归的遍历方式(即利用栈的知识进行遍历,本质上是一样的)#include<stdio.h>#include<stdlib.h>typedef int elemtype;#define size 100#define more 20typedef struct bitnode{elemtype data;//二叉树的数据域struct bitnode* l

2021-11-25 11:43:28 819 1

原创 队列的线性存储结构 c语言 数据结构 简单易懂 超详细~~

#include<stdio.h>#include<stdlib.h>typedef int Elemtype;#define maxsize 100typedef struct queue{//注意再用顺序结构来表示栈和队列时,不用再进行node节点的定义了//首先我们不需要指针了,并且数据域可以放在队列中的数组里int rear;int front;int nodes[maxsize];}queue;queue* initqueue();//队列的初始化

2021-11-25 11:43:16 455

原创 线性表的线性存储结构及其基本操作(创建、初始化、插入、删除、查找、遍历) c语言 数据结构 简单易懂 超详细~~

/本程序中半酣对线性表的创建、初始化、插入、删除、查找、遍历等基本常用操作/#include<stdio.h>#include<stdlib.h>#define maxsize 100typedef int ElemType;typedef struct sqlist{ElemType data[maxsize];int length;}sqlist;//创建空的顺序表sqlist* create(){sqlist* L = (sqlist*)malloc

2021-11-25 11:42:46 2167

原创 用邻接矩阵来prim普利姆算法详解 c语言 数据结构 简单易懂 超详细~~

#include<stdio.h>#include<stdlib.h>#define INFINITY 65535#define maxsize 100typedef struct pragh{int numnode, vertexnode;//顶点数,边表数int vex[maxsize];//存放顶点的数组int arc[maxsize][maxsize];//存放边表信息的数组}pragh;void init(pragh* G){int w;//存放权

2021-11-25 11:42:31 529

原创 kruscal克鲁斯卡尔算法求最小生成树 c语言 数据结构 简单易懂 超详细~~

#include<stdio.h>#include<stdlib.h>#define INFINITY 65535#define maxsize 100typedef struct{int begin;int end;int weight;}Edge;//对边集数组的定义typedef struct pragh{int numnode, vertexnode;//顶点数,边表数int vex[maxsize];//存放顶点的数组int arc[maxsi

2021-11-25 11:42:20 865

原创 二叉树的三种遍历方式(前序、中序、后序遍历)以及通过前序遍历的方式判断各节点在第几层 简单易懂 超详细~~

#include<stdio.h>#include<stdlib.h>typedef char Elemtype;typedef struct Bitnode{Elemtype data;struct Bitnode* lchild, * rchild;}Bitnode,*Bittree;void createtree(Bittree *T){//因为要修改指针的值,所以要传入指针的指针才可以修改指针//为什么要修改指针的指向,因为递归结束的条件就是所有的结点都到

2021-11-24 18:41:56 890

原创 汉诺塔问题(通过递归实现) c语言 数据结构

#include<stdio.h>void hannuota(int n, char A, char B, char C);//参数的含义是将A上的n个盘子借助B移动到Cint main(void){char a = ‘A’;char b = ‘B’;char c = ‘C’;int n;printf(“请输入盘子的个数\n”);scanf_s("%d", &n);hannuota(n,a,b,c);}void hannuota(int n, char A, c

2021-11-24 18:38:23 423

原创 利用栈的知识将十进制的数转换为r进制的数 c语言 数据结构 超详细~~

#include<stdio.h>#include<stdlib.h>typedef int Elemtype;typedef struct node{Elemtype data;struct node* next;}node;typedef struct stack{struct node* top;//栈顶指针struct node* bottom;//栈底指针}stack;void initstack(stack*);//栈的初始化void push

2021-11-24 18:36:40 2100

原创 邻接表的创建 c语言 数据结构 超详细~~

#include<stdio.h>typedef char vertextype;typedef int edgetype;#define maxsize 100#include<stdlib.h>typedef struct edgenode{int adjvex;//邻接表的结点下标struct edgenode* next;//指向下一个顶点的指针}edgenode;typedef struct vertexnode{int data;//顶点的数据

2021-11-24 18:36:32 638

原创 邻接表的深度遍历 c语言 数据结构 简单易懂 超详细~~

#include<stdio.h>#include<stdlib.h>#define maxsize 100int visited[maxsize];//结点是否被访问的标志信息typedef struct edgenode//建立边表结点{int adjvex;//存储相邻节点的下标edgenode* next;//指向下一个结点的指针}edgenode;typedef struct vertexnode//建立顶点表{//顶点表可以用数组,也可以用链表//

2021-11-24 18:36:24 1292

原创 邻接矩阵的创建 c语言 数据结构 简单易懂 超详细~~

#include<stdio.h>#define maxsize 100typedef char vertextype;//顶点类型typedef int edgetype;//边的类型#define INFINITY 65535#include<stdlib.h>typedef struct{vertextype vert[maxsize];//顶点表的信息edgetype arc[maxsize][maxsize];//边表信息int numedge, num

2021-11-24 18:35:26 562

原创 邻接矩阵的深度优先遍历 c语言 数据结构 简单易懂 超详细~~

#include<stdio.h>#define maxsize 100#include<stdlib.h>#define INFINITY 65535int visited[maxsize];//注意这个visited数组必须为全局变量//因为若为局部变量,在另外一个函数内修改它,在返回到被调函数时,值不会发生改变typedef struct graph{int arc[maxsize][maxsize];//边表int vert[maxsize];int n

2021-11-24 18:35:10 2143 1

原创 面试求x的n次方 c语言 数据结构 超详细 简单易懂~~

#include<stdio.h>#include<stdlib.h>int function1(int x,int n){int result = 1;for (int i = 0; i < n; i++){result = x;}return result;}int function2(int x, int n){if (n == 0)return 1;elsereturn function2(x, n - 1) x;}int func

2021-11-24 18:34:25 916

原创 树的存储结构之child表示法的表头结构 简单易懂 超详细~~

#include<stdio.h>typedef int Elemtype;#define maxsize 100//孩子表示法的那个结点的数据域存放的不是结点的值//存放的是下一个结点的孩子(一个接着一个)typedef struct node{int child;//为什么知道了该孩子结点之后,还需要定义一个指向下一个结点的指着呢?//因为我们不光要知道该孩子的孩子结点,还应该通过这个结点可以找到//该孩子结点,所以我们必须通过一个指针域指向该孩子节点struct no

2021-11-24 18:33:41 190

原创 树的存储结构之双亲child表示法的表头结构 简单易懂

#include<stdio.h>#include<stdlib.h>#define maxsize 100typedef char Elemtype;//建立孩子节点typedef struct Bitnode{Elemtype data;struct Bitnode* next;}Bitnode;//建立表头结构typedef struct nodeptr{int parent;//存放双亲结点的下标Bitnode* firstchild;//指向第

2021-11-24 18:33:06 242

原创 树的存储结构之双亲表示法的表头结构 超详细 简单易懂~~

#include<stdio.h>typedef int elemtype;#define maxsize 100//双亲表示法不需要通过链表进行实现//只需要通过顺序存储的parent的值就可以了typedef struct node{int parent;//表示其双亲结点的位置:其在数组位置的下标elemtype data;//树结点的数据类型}pnode;//注意这个结点只能表示的是一行数据哦typedef struct ptree//定义一颗树{int n;/

2021-11-23 22:06:16 302

原创 线索二叉树的创建 c语言 数据结构 简单易懂 超详细~~

#include<stdio.h>#include<stdlib.h>//创建枚举类型typedef enum{link,thread} PointNag;//link(0)表示是指向的是左右孩子//thread(1)表示的是前驱结点和后继节点typedef char Elemtype;//创建二叉节点typedef struct BiThrnode{Elemtype data;struct BiThrnode* lchild, * rchild;PointNa

2021-11-23 21:57:41 184

原创 线性表的链式存储结构 及其常用操作(单链表的创建、初始化、插入、删除、遍历、查找指向元素、单链表的销毁)c语言 数据结构 简单易懂 超详细~

#include<stdio.h>//链表结点typedef struct node{int data;struct node* next;}node;node* creatlinknode(int n);//创建链式队列void insertlinknode(node* head);//单链表的插入,//在数据域为num的结点之前插入一个结点void deletelinknode(node* head, int num);//单链表的删除//删除数据域尾num的结点vo

2021-11-23 21:56:34 1209 1

原创 线性表的链式存储结构(即用指针来实现)即其常用操作(初始化、单链表的插入、删除、查找指定的数据、单链表的遍历、计算单链表的长度) c语言 数据结构 简单易懂 超详细~~

/本程序包含对线性表也就是单链表的基本操作,初始化、单链表的插入、删除、查找指定的数据、单链表的遍历、计算单链表的长度等/#include<stdio.h>#include<stdlib.h>typedef int Elemtype;typedef struct node{Elemtype data;struct node* next;}Node;//初始化链表Node* create(){Node* head;head = (Node*)malloc(si

2021-11-23 21:49:45 645

原创 静态队列(循环队列)出现的原因及其实现(队列初始化、入队、出队、遍历、判断循环队列是否为空或者已满)、 c语言 数据结构 简单易懂 超详细~~

/本程序中对循环队列包含队列初始化、入队、出队、遍历、判断循环队列是否为空或者已满等基本常用操作//好啦~现在来讲循环队列出现的原因::因为队列入队和出队front和rear都是向后移动的,那么我们前面的元素一旦出队之后,这些空间都不能得到合理的利用了,那么这对于计算机来说,是一个极大的空间资源的浪费,于是就有了循环队列的出现啦/#include<stdio.h>#include<stdlib.h>typedef struct queue{int* base;int f

2021-11-23 21:38:59 705

原创 双向链表的基本常用操作(创建、初始化、插入、删除、链表长度、查找指定元素的位置、链表的销毁) c语言 数据结构 超详细~~

/本程序中包含对双向链表的::创建、初始化、插入、删除、链表长度、查找指定元素的位置以及双向链表的销毁/#include<stdio.h>#include<stdlib.h>typedef int Elemtype;typedef struct linknode{Elemtype data;struct linknode* next;}Linknode,Linklist;//创建循环链表Linknode create(){Linklist head = (Li

2021-11-23 21:19:50 2215

原创 栈的链式存储结构(指针)以及栈的常用操作(入栈、出栈、遍历、统计栈的元素个数、取栈顶元素) c语言 数据结构 超详细~~

#include<stdio.h>#include<stdlib.h>typedef int Elemtype;typedef struct node{Elemtype data;struct node* next;}node;typedef struct stack{struct node* top;//栈顶指针struct node* bottom;//栈底指针}stack;void initstack(stack*);//栈的初始化void push

2021-11-23 21:08:42 1861

原创 栈的线性存储结构及其常用操作(初始化、入栈、出栈、遍历、栈空、栈满、取栈顶元素) c语言 数据结构 简单易懂 超详细~

#include<stdio.h>#include<stdlib.h>typedef int Elemtype;#define maxsize 100typedef struct stack{ Elemtype nodes[maxsize];//表示栈的最大容量 int top;//表示栈顶指针的位置 int length;//表示当前栈所存储的元素的个数}stack;stack* initstack();//栈的初始化bool isfullstack(sta

2021-11-23 20:53:12 884

原创 floyd算法的实现(以及与dijstra迪杰斯特拉算法的比较) c语言 简单易懂 超级详细~~

#include<stdio.h>#include<stdlib.h>#define maxsize 100#define INFINITY 65535//表示不可达,一般用于初始化//用邻接矩阵来设计floyd算法//注意dijkstra算法和floyd算法本质都是在找最短距离,只不过一个是单源的//一个是多源的//并且prim算法和克鲁斯卡尔算法kruscal是在找最小生成树,即找一个代价最小的图将图中的所有顶点都连接起来,因为他们的本质就是寻找最小生成树,但是

2021-11-23 20:43:10 334

原创 dijstra(迪杰斯特拉算法的实现单源最短路径以及改算法与prim普利姆算法的比较) c语言 简单易懂 超详细~~

#include<stdio.h>#include<stdlib.h>//该算法和prim算法很相似,都是用了加点法,但是prim算法//用到的比较的方式是比较lowcost数组的值,但是本程序中的dijkstra算法比较的是累计的值//((((并且在之后floyd算法,它的核心是有一个实时更新的代价的数组,//当我们将所有的顶点都遍历一遍之后,就可以找到图中的任意一个顶点//到其他顶点的最短路径了))))//即有一个数组,我们每加入一个顶点就会更新它,直到所有的顶点都加

2021-11-23 20:28:33 215

原创 多值参数的具体使用及其应用场景 超详细 简单易懂~

一多值参数的含义:有时可能需要一个函数中处理的参数的个数是不确定的,这个时候就可以使用多指参数啦。二多值参数的使用在参数名前面加上一个*,表示可以接收一个元组;在参数名前面增加两个*,表示可以接收字典;一般在给多值参数命名时,存放元组的通常使用args的变量名(注意时一个哦),存放字典的通常使用**kwargs的形参变量(注意是两个*哦)。三多值参数的应用场景多值参数常见的应用场景:应用在需要使用可以接收任意多个参数的函数。补充:(1)在调用函数时,如果被调函数的参数列表中有元组的参数,那么在

2021-08-28 09:53:01 639

原创 元组和字典的拆包 详解

一拆包出现的原因如果在调用函数时,如果希望将列表变量的值传递到agrs中,并且将字典变量的值直接传递到kwargs的形参变量中去,而不是在字典变量和列表变量在被调函数中同时出现时,将字典变量的值传递到列表变量中去。(详解::就是想要一起将字典变量传递到被调函数中去,但是如果这个时候出现了列表变量,又会出现将字典变量的值传递到列表变量中去,但是我们又不想在调用函数时只当一个一个的指定字典中的键值对,那么就可以在列表变量的前面加上一个*,在字典变量的前面加上两个**,既可以节约时间不用指定具体的键值对,又可

2021-08-28 09:46:22 374

原创 函数的返回值和参数的理解 超详细 简单易懂

一函数的返回值(1)如果外界需要使用到这个函数处理之后的数据,就可以将这个结果用返回值的形式传递到函数外部(使用return关键字,在调用函数的一方,需要使用一个变量来接收该函数返回的结果)(2)但是一个函数我们需要返回多个返回值该怎么处理呢?处理方式为:可以将该变量封装成为一个元组,因为一个元组里面可以保存多个值,将一个元组返回就可以将想要返回的所有信息返回了(那么在调用函数时,用来接收结果的那个参数的类型也是一个元组类型,因为返回的是一个元组的类型)就是在return关键字后面将返回的所有数据加上

2021-08-23 16:49:56 2931

原创 全局变量和局部变量的理解及注意事项 超详细 简单易懂

一全局变量和局部变量(1)全局变量和局部变量的含义:在函数体内部定义的变量叫做局部变量,在函数体外部定义的变量叫做全局变量。局部变脸只能在定义的那个函数体的内部进行使用,而全局变量在所有函数内部都可以使用。(2)局部变量:1.函数执行结束之后,定义在函数体内部的局部变量的内存空间就会被释放;2.且不同的函数可以定义具有相同名字的局部变量,因为他们两个的存储空间不在同一个地方,所以即使同名,也不会相互干扰。3.局部变量的生命周期为该变量创建到该函数体结束(生命周期:变量被创建开始到被系统回收的这一

2021-08-22 17:11:07 11390

原创 python中变量的可变类型和不可变类型的理解及其应用 简单易懂

一变量的可变类型可变类型就是:当变量再内存中分配地址之后,可以使用方法来改变变量的值,而不改变该变量原有的地址二变量的不可变类型不可变类型就是:一旦再内存中分配空间之后,那么就不允许该内存空间的值进行修改注意:(1)当我们使用赋值语句给列表或者字典进行赋值时,改变的不是原有数据类型的数据,改变的是原有数据类型的地址(引用需要重新指向一块内存空间来装新的数据,并用等号左边的变量名指向该分配的内存地址),列表或者字典使用变量名调用方法才是修改变量的值,没有修改变量的地址。(2)使用赋值语句进行赋值时

2021-08-22 16:33:18 1005

原创 python中变量的引用的理解及两种常见的应用场景 超详细 简单易懂

一 变量和数据数据是保存在内存中的某一个位置的;变量是记录的保存数据的地址的;并且在python中,变量和数据都是保存在内存中的,并且变量和数据时分开存储的。二 引用(1)引用的含义:变量记录的是数据在内存中的地址,并且这个动作就叫做引用(2)如果已经修改变量的引用,变量不再是原先数据的引用,变成了对新数据的引用(就指向了新的数据的地址,该变量中记录着新的数据)(3)使用使用id()函数就可以查看变量中保存数据的地址(4)在计算机中,内存的地址其实就是一个数字,用%d的形式进行输出三 引用在

2021-08-22 16:09:28 1736

原创 python中运算符及对比列表追加方法 超详细 简单易懂

一算术运算符1.* 号运算符:用于重复,例如:[3,4]*2 (回车) 会在控制台输出[3,4,3,4]一个新的列表2.+号运算符:用于合并列表、元组、字符串注意列表、元组和字符串都可以重复,但是字典不可以重复(整型数据类型也不支持哦)因为在字典中的键值对必须是唯一的(key必须是唯一的)补充:(1)字符串列表元组都可以使用+来拼接得到一个新的(字典不可以)(2)对于列表而言,加号和extend都可以进行合并,但是用加号合并和extend合并时有什么区别呢?用+号进行合并,会直接在pych

2021-08-19 15:18:11 364

原创 python中的公共方法:内置函数及其具体使用 超详细~ 简单易懂

一公共方法的含义公共方法就是列表元组字典字符串都可以使用的方法就叫做公共方法二python中非数字型数据类型的内置函数(1)len ()(2)del()(3)max()(4)min()(5)cmp()(1)len函数:Len函数是四个数据类型都有的,它是用来统计容器里面的元素的个数的;但是只有字典用len方法统计的是键值对的个数(2)del函数:1.del在python中的出现有两种形式:一种是以关键字的形式出现,使用格式为del +元素就可以将指定的元素删除;另外在python中,为了

2021-08-18 20:08:08 576

原创 python中字符串的切片及其具体使用 超详细~ 简单易懂

一字符串切片的含义切片是使用索引值(开始索引和结束索引)来限定范围的,以达到可以截取字符串的目的。切片的结果就是切取开始索引和结束索引之间的内容,结束索引的内容并不包含在切片的范围内使用格式 字符串[开始索引:结束索引:步长]步长出现的原因:是希望可以跳跃式的截取字符串二索引顺序索引:索引从0从左向右依次递增,这样的索引叫做顺序索引;倒序索引:如果这个字符串很长,很难数到最后我们想要的位置,那么就可以使用倒序索引了(最后一个字符对应的索引值是-1,然后从右向左,依次递减,这样也可以通过索引值

2021-08-18 19:37:17 3167

原创 python拆分和拼接字符串的具体使用 超详细 简单易懂

一去除空白字符的含义将一个字符串中前面没用到空白字符串或者后面没用到的空白字符删掉,只保留中间有内容的部分二去除空白字符的方法去除空白字符所用方法有strip,lstrip,rstrip(strip有去除的意思)使用格式:字符串.strip():将字符串左右两边所有的空白字符都去掉字符串.lstrip():只将字符串左边的空白字符去掉字符串.rstrip():只将字符串右边的空白字符去掉注意这三个方法都是没有参数的哦补充:如果是想要输出一段居中对齐的文字,但是里面的文字中含有空白字符,那么

2021-08-18 17:06:18 1032

原创 python中字符串的文本对齐和去除空白字符的三种方法 简单易懂

一文本对齐的含义首先文本对齐的意思:指输出的字符串要么统一向左对齐,要么统一向右对齐,要么统一居中对齐;二使用方法(1)向左对齐:字符串.ljust(width,fillchar=“ ”)该方法返回该字符串的左对齐,并用空格填充至width宽度的一个新字符串(2)向右对齐:字符串.rjust(width,fillchar=“ ”)该方法返回该字符串的右对齐,并用空格填充至width宽度的一个新字符串(3)居中对齐:字符串.center(width,fillchar=“ ”)该方法返回该字符串

2021-08-18 16:31:40 944 1

原创 python中字符串的查找、替换及判断数字的三个方法的区别和联系 简单易懂

一字符串的查找(1)判断是否以指定的字符串开头用到了startswith方法(只需要一个参数哦);(2)判断是否以指定的字符串结尾用到了endswith方法,并且也是只需要一个参数(3)查找指定的字符串所用到的方法index方法和find方法这两种方法都可以判断指定的字符串在母串中的索引值;区别在于:用index方法查找母串中不存在的字符串,会报错;但是用find方法查找母串中不存在的字符串,不会报错,会返回-1并且在寻找字符串的位置还有rindex和rfind方法,它的用法分别和index方

2021-08-18 16:10:25 796

原创 字符串的定义及其具体使用 超详细 简单易懂

一字符串的定义字符串就是一串字符,表示的是文本的数据类型注意字符串也是有序序列哦二字符串的定义方式字符串可以用一对双引号或单引号来定义,但是我们一般采用双引号的方式来定义字符串。注意:如果在定义的字符串的内部需要有单引号或者双音号,可以有两种解决方式(1)采用转义的方式例如:print(“我的名字是\“小红””)(2)如果在字符串内部需要使用双引号,那么在字符串的外面就使用单引号;如果在字符串内部需要使用单引号,那么在字符串的外面就使用双引号就可以解决这类问题啦~三字符串的取值操作(1)

2021-08-14 17:21:29 8592

原创 字典的遍历及其字典和列表的组合应用

一字典的遍历1.字典的遍历也是使用for关键字2.使用格式为:for 变量名 in 字典for后面的变量名记录的是每次遍历的键值in后面表示的是遍历的哪一个字典3.如果想要输出每次遍历的键和值,使用格式为例如: for m in lihua_dict(m表示变量名,表示每一次循环中获得的键值key,通过这个键值,就可以找到相应的数据啦~,并且lihua_dict表示字典名)print(“%s:%s”%(m,lihua-dict[m]))(前提是该字典记录的都是字符串类型的数据)4.在实际

2021-08-14 16:23:26 1091

空空如也

空空如也

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

TA关注的人

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