- 博客(23)
- 收藏
- 关注
原创 数据结构【链表01】----删除单链表中所有值为x的节点
问题描述:在带头结点的单链表L中,删除所有值为x的节点,并释放其内存空间,假设值为x的节点不唯一,试编写算法实现上述代码。问题分析使用pre指针指向头节点,用pre->next逐个扫描,如果pre->next节点的值为x,pre指针指向pre->next->next,删除pre->next指针,然后释放pre->next这个节点。如果pre->next的值不为x则pre往后移动一个节点为了简化算法,可以引用p指针表示pre节点的后继指针,为了释放p指针的内存
2022-03-07 10:35:20
7974
4
原创 C语言复习笔记(共用体)
共用体所谓共用体又称联合体是将不同类型的数据组合在一起存放在同一存储空间的一种构造数据类型。声明共同体类型和定义变量声明union data{ char c; float a;}定义union data x,y,z;引用x.a = 23.5;x.c = 'x';使用共同体类型注意事项由于共同体变量中的各个成员共用同一块存储空间,因此,在任一时刻,只能存放一个成员的值。共用体变量中起作用的成员值是最后一次被赋值的成员值。即再次赋值会覆盖之前的值。共用体变量的地址和它成
2022-02-27 14:53:00
1144
原创 C语言复习笔记(结构体类型和结构体变量)
结构体的定义struct student{ int num; char name[20]; int age; char sex; float score;}结构体类型变量的定义1、可以先声明结构体类型,再定义结构体变量例如再上面的代码中已经声明了结构体类型,可以用它来定义结构体变量struct student boy1,boy2;2、在声明的同时定义变量struct student{ int num; char name[20]; int age; char sex
2022-02-27 14:42:01
631
原创 C语言复习笔记(数组的指针与函数的指针)
int a[5];int (*pa)[5];pa = &a;上面的代码定义一个指向数组的指针int a[5];int *pi;pi = &a[0];下面定义一个指针变量这几种的表示都是允许并等价的 a[3] = 10; *(pi+3) = 10; pi[3] = 10; (*pa)[3] = 10;行指针与列指针在使用指针分别指向二维数组中的一个元素和二维数组中一个子数组(一行)的时候。可以形象地指向单个元素的指针称为列指针,而指向子数组的指针称为行指针。
2022-02-27 14:09:09
138
原创 C语言复习笔记(指针数组和多级指针)
定义:int *p[5];定义了一个指针数组,每一个元素均为一个指向整型值的指针。如果没有进行初始化,则每个元素均为无效指针。可以在定义的时候对指针进行初始化,也可以通过以下循环的方式进行一一配对。int a[10],i,*p[10];for(i=0;i<10;i++) p[i] = &a[i];例:不改变数组中各个元素的顺序,按照从小到大的次序来输出数组值。#include<stdio.h>#define n 10int main(){ int
2022-02-16 14:59:23
366
原创 C语言复习笔记(指针)
指针的概念地址:变量在内存中会占用一定的连续的字节空间,每字节具有的唯一编号称为地址指针:变量的地址指针变量:一种特殊的变量可以保存另一个变量的地址指针的定义方法int *pi;通常情况下都会在指针变量前加上前缀p,如上面定义的pi。p是pointer的缩写,C语言不强制如此,只不过是为了增加代码的可读性。指针的基本类型可以有很多类型,但无论基本类型是什么,指针变量总保存指向对象所占据的起始地址,无论指向int类型的指针还是指向double类型的指针,其指针变量仅仅保存指向变量的最低字节的地
2022-02-13 21:50:06
695
原创 C语言复习笔记(常用字符串处理函数)
使用时需要加上预处理命令#include <string.h>字符串连接函数strcat使用方法strcat(str1,str2)功能:连接两个字符数组,返回值是字符数组1的首地址。//strcat函数 #include<stdio.h>#include<string.h>//strcatint main(){ char str1[10] = "hello"; char str2[10]; printf("please input stri
2022-02-11 21:38:16
635
原创 C语言复习笔记(字符数组&字符串数组)
字符数组的定义和初始化char c[5] = {'a','b','v','c','f'};说明:(1)如果大括号内的字符数量超过了数组的长度则会报错,如果字符数量小于数组长度则会自动补’\0’。(2)对字符数组初始化时,如果提供的初值个数与数组长度相同,可以省去数组的长度。字符串数组在C语言中没有专门的字符串变量,通常是用一个一维字符数组来存放一个字符串。由于在C语言中,字符串总是以’\0’作为它的结束符,因此,当用一个一维数组保存一个字符串时,也要把结束符’\0’存入该数组,并以此作为字符
2022-02-11 20:23:08
1090
原创 C语言复习笔记(二维数组(杨辉三角形))
二维数组的定义int a[3][4];3为第一维,4为第二维。在C语言中,二维数组采用按行排列的方式存储,数组名的值为给其分配的存储空间的首地址。关于二维数组所占空间:存储空间计算公式为行数 * 列数 * 一个数组元素所需字节数例如 int a[3][4] 所需分配的存储空间大小为:3 X 4 X 4 = 48 字节二维数组的初始化(1)按行的方式进行初始化int a[3][4] = {{1,3,31},{23,54,55},{12,13,24},{2,6,60}};(2)按照数
2022-02-11 19:33:10
714
原创 C语言复习笔记(排序)
冒泡排序每次遍历将arry[i]和arry[i+1]交换,最大的会沉底。第二次遍历到倒数第二个即可即j-1//冒泡排序int bublesort(int arry[],int n){ int i,j,temp; for(j=0;j<n;j++) { for(i=0;i<n-j;i++) { if(arry[i]>arry[i+1]) { temp = arry[i]; arry[i] = arry[i+1]; arry[i+
2022-02-09 21:08:22
113
原创 C语言复习笔记(一维数组)
数组是一组有序数据的集合,在程序设计中,为方便处理往往会把一些同类型的数据按有序的形式组织起来,且用一个统一的名字标识这组数据,这个名字就称为数组名,构成数组的每一数据称为数组元素或者下标变量。在C语言中,数组属于构造数据类型。一个数组可以包含多个数组元素,这些数组元素可以是基本数据类型或构造类型,按照数组的维数可以分为一维数组和多维数组,按照数组元素的类型,数组又可以分为数值型数组、字符型数组、指针数组、结构体数组等各种类别int a[10]; //一维数组的定义注意:在C语言中只能逐个的引用
2022-02-09 18:12:57
491
原创 C语言复习笔记(函数的递归调用)
//递归函数求阶乘long factorial(int n){ int f; if(n==1||n==0) { f = 1; } else { f = factorial(n-1)*n; } return f;}int main(){ int n; long num; printf("please input a number:\n"); scanf("%d",&n); printf("%d! = %ld",n,factorial(n));
2022-02-08 21:09:57
163
原创 C语言复习笔记(局部变量和全局变量的存储类别)
局部变量的存储类别一般来说,内存中供用户使用的存储空间分为三部分,即:(1)程序区:用于存放程序。(2)静态存储区:存放在这个区域的变量,在程序开始运行时就分配固定的存储单元,直到程序运行结束后才释放所占据的存储单元。因此把存储在该区域的变量称为静态存储变量,例如全局变量、静态局部变量等。(3)动态存储区:存放在这个区域的变量,在函数被调用的执行时才分配储存单元,一旦函数调用结束后立即释放所占的存储单元。因此把存储在该区域的变量称为动态存储变量,例如函数的形参、自动型的局部变量、函数调用时的现场保护
2022-02-08 18:07:20
1347
原创 C语言复习笔记(break语句和continue语句)
break语句(1)跳出switch结构。(2)强制中断当前循环体的执行并退出循环。continue语句只能用在循环体中。//continueint main(){ int x; for(x=0;x<=100;x++) { if(x%2!=1) continue; printf("%4d",x); } return 0; } 输出1到100的奇数continue会跳过判断成功的数总结:break是终止continue是跳过...
2022-02-07 19:08:50
262
原创 c语言复习笔记(for语句)
矩形乘法表int main(){ int i,j; for(i=1;i<=9;i++) { for(j=1;j<=9;j++) { printf("%3d",i*j); } printf("\n"); } return 0;}梯形乘法表int main() { int i,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { printf("%dx%d=%2d ",i,j,i*j);
2022-02-07 18:55:48
113
原创 C语言复习笔记(while语句和do while语句)
//折叠纸张算是否超过珠穆朗玛峰 int main(){ float paper = 0.15; int time = 0; while(paper<=8844000) { paper = paper*2; time ++; } printf("经过%d次后,纸的厚度为%fmm超过了珠穆朗玛峰的高度",time,paper); return 0;}do while 语句int main(){ float paper = 0.15; int time
2022-02-07 18:30:01
266
原创 C语言复习笔记(switch语句)
switch 语句中case后面的表达式只能为整型或字符型,且每个表达式的值必须互不相同。switch(op){ case 1: printf("1"); break; case 2: printf("2"); break; case 3: printf("3"); default: printf("error"); }
2022-02-07 18:20:06
669
转载 用Python轻松制作漂亮的表格
用Python轻松制作漂亮的表格Python太有用而且很方便图表可以用matplotlib轻松制作,数值计算只要有numpy就行。最近,Python被广泛用于机器学习系统的研究,甚至还能制作游戏。我突然想知道:“是否可以用Python来制作图表而不是表格?”这个时候,我在想“用Python可以制图,是不是也可以制作表格呢?”突然产生了这样的疑问。matplotlib答案就在本文。显然,matplotlib似乎具有创建表的功能。代码看起来就是像下面的这样。import matplotlib
2022-01-15 10:53:50
6847
原创 基于Nonebot2搭建QQ机器人(三)Linux端部署机器人
目录服务器选择服务器环境配置Ubuntu在服务器配置python安装go-cqhttp查看进程以及设置进程一直运行通过前两章的内容,相信已经可以编写简单的插件完成一些QQ机器人的功能了。但是由于是在自己电脑上运行的,当关闭go-cqhttp或者停止bot.py运行时,就会让机器人停止工作。那么怎么样才能够让机器人一直保持工作呢?那就是将我们的代码、go-cqhttp部署在服务器上,本篇将带着大家一起在Linux服务器上部署自己的QQ机器人。服务器选择目前市面上有很多类型的服务器,对于小白而言,推荐大
2022-01-01 16:34:59
11161
6
原创 基于Nonebot2搭建QQ机器人(二)编写一个自动回复插件
一、创建以及加载插件在上一篇nonebot2配置的时候我们曾经在项目文件夹的src文件夹下创建了一个plugins文件夹。我们可以直接在这个文件夹下创建python文件编写代码,但是后期插件数量变多的时候plugins文件夹内会变得非常的杂乱,所以笔者建议每个插件单独创建一个文件夹,具体操作如下。打开plugins文件夹,新建一个自命名文件夹。如图:我这里创建了一个zdhf文件夹用于存放自动回复插件的py文件。但是由于原本的插件目录在plugins内,如果我们想让zdhf这个文件夹内的插件运行还需要
2021-12-29 18:54:44
8722
25
原创 基于Nonebot2搭建QQ机器人(一)机器人环境配置
一、Nonebot2介绍摘录于Nonebot2官方文档 https://v2.nonebot.dev/NoneBot2 是一个可扩展的 Python 异步机器人框架,它会对机器人收到的事件进行解析和处理,并以插件化的形式,按优先级分发给事件所对应的事件响应器,来完成具体的功能。除了起到解析事件的作用,NoneBot 还为插件提供了大量实用的预设操作和权限控制机制。对于命令处理,它更是提供了完善且易用的会话机制和内部调用机制,以分别适应命令的连续交互和插件内部功能复用等需求。得益于 Python 的
2021-12-29 16:54:29
12997
3
原创 python字典更新解决覆盖问题
问题示例:输出时发现列表里的字典全部变成了最后一个字典的键值对。下面展示一些 内联代码片。// A code blockdata1 = []all_data = {}for td in trs: name = td.xpath('./td[2]/text()')[0] xq = td.xpath('./td[3]/text()')[0] subject = td.xpath('./td[4]/text()')[0] type = td.xpath('./td[5
2021-12-27 17:32:41
3325
原创 解决Centos7中Vscode无响应问题
@TO解决Centos7中Vscode无响应问题C版本信息虚拟机版本:VMware® Workstation 16 Pro 16.1.2 build-17966106Linux系统:CentOS7问题描述在CentOS7中使用命令行直接安装Vscode时,打开Vscode出现界面卡死、无响应情况问题原因在安装Vscode时,系统默认安装和官网下载的Vscode版本,都是最新版本的Vscode,图为笔者安装时的最新版本:1.58,由于CentOS7与Vscode的新版本不兼容,导致V
2021-07-27 22:51:47
2891
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人