当前位置: 首页 > news >正文

【数据结构】夯实基础|线性表刷题01

在这里插入图片描述

  • 作者:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:算法、数据结构、Java等相关知识。
  • 博主主页: @是瑶瑶子啦
  • 所属专栏: 【数据结构|刷题专栏】:该专栏专注于数据结构知识,持续更新,每一篇内容优质,浅显易懂,不失深度!该专栏题目较为基础经典,旨在帮助学习数据结构的同学更好地、熟练地掌握如何使用相应的数据结构进行相关操作和解题
  • 近期目标:写好专栏的每一篇文章

前言

不要被代码长度劝退了!都是很简单的操作,目的在于熟练掌握和使用数据结构!下面是用C语言描述的数据结构。严格意义上来说数据结构是门单独的课,用什么语言描述不是很重要,主要是学习如何构造相应的数据结构并且实现其相应操作。
题目后面的⭐对应相应的难度(三个星其实也不是很难)

目录

    • 前言
  • 一、顺序表的合并(⭐)
  • 二、城市定位(⭐⭐⭐)
  • 三、线性表的减法(⭐⭐⭐)

一、顺序表的合并(⭐)

【习题描述】
已知顺序表A中的元素按值递增存放,而顺序表B中的元素按值递减存放。试设计一个高效算法,将B中的所有元素插入到A中(假设A中的空间足够大),仍使A为递增顺序表。

基本要求及提示

(1) 首先创建两个顺序表A,B。

(2) 设计一个符合上述要求的MergeSeqList(A, B)函数。

(3) 要求程序通过一个主菜单进行控制,在主菜单界面通过选择菜单项的序号来调用各功能函数。

#define _CRT_SECURE_NO_WARNINGS 1//常用系统头文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>//常用的宏定义符号常量
#define ERROR 0
#define OK 1
#define FALSE 0
#define TRUE 1
#define MAXSIZE 100
int resultArray[MAXSIZE];
typedef struct {int data[MAXSIZE];int length;
} Seqlist;
int menu_select() // 菜单驱动程序
{int sn; // sn用于接收菜单选项printf("\n按任意键进入主菜单!\n");printf("\n   *** 顺序表合并系统 ***\n"); // 显示菜单printf("==============================\n");printf("   1、创建A顺序表\n");printf("   2、创建B顺序表\n");printf("   3、合并并输出该顺序表\n");printf("   0、退出\n");printf("==============================\n");printf("  请选择0--3:  ");for (;;) // 菜单功能选择{scanf("%d", &sn);getchar();if (sn < 0 || sn > 3) // 判断菜单选项是否属于合理范围:0--3printf("\n\t 输入选择错误,请重新选择 0--3: ");elsebreak;}return sn;
}void SetA(Seqlist* A) {int a, i;A->length = 0;printf("请输入要创建的元素的个数:");scanf("%d", &a);for (i = 0; i < a; i++) {printf("请输入第%d个元素", i + 1);scanf("%d", &A->data[i]);A->length++;}}void SetB(Seqlist* B) {int a, i;B->length = 0;printf("请输入要创建的元素的个数:");scanf("%d", &a);for (i = 0; i < a; i++) {printf("请输入第%d个元素", i + 1);scanf("%d", &B->data[i]);B->length++;}
}
void reverse(Seqlist* B) {int left = 0, right = B->length - 1;while (left < right) {int t = B->data[right];B->data[right] = B->data[left];B->data[left] = t;left++;right--;}
}
void merge(Seqlist* A, Seqlist* B) {//先把B逆序reverse(B);int i = 0, j = 0, x = 0;;while (i < A->length && j < B->length) {if (A->data[i] < B->data[j]) {resultArray[x++] = A->data[i++];}else {resultArray[x++] = B->data[j++];}}while (i < A->length) {resultArray[x++] = A->data[i++];}while (j < B->length) {resultArray[x++] = B->data[j++];}for (int m = 0; m < A->length + B->length; m++) {A->data[m] = resultArray[m];}A->length = A->length + B->length;
}void main() {Seqlist A;Seqlist B;for (;;) // 菜单驱动程序:无限循环菜单功能选择与调用相应功能函数,直到选择0 退出{switch (menu_select()) // 调用菜单函数,按返回值选择功能函数{case 1:printf(" 创建A表\n");SetA(&A);break;case 2:printf(" 创建B表\n");SetB(&B);break;case 3:printf(" 合并A、B表\n");merge(&A, &B);printf("合并后的A顺序表如下\n");for (int i = 0; i < A.length; i++) {printf("%d", A.data[i]);printf("\n");}break;case 0:printf(" 再见!\n"); // 退出系统return;} // switch语句结束} // for循环结束
} // main()函数结束

二、城市定位(⭐⭐⭐)

【习题描述】
将若干城市的信息存入一个带头结点的单链表,结点中的城市信息包括城市名、城市的位置坐标。

(1) 给定一个城市名,返回其位置坐标;

(2) 给定一个位置坐标P和一个距离D,返回所有与P的 距离小于等于D的城市。

(3) 要求程序通过一个主菜单进行控制,在主菜单界面通过选择菜单项的序号来调用各功能函数。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>//常用的宏定义符号常量
#define ERROR 0		                                          
#define OK 1
#define FALSE 0
#define TRUE 1//请在此填写数据类型说明
typedef struct City_List {char name[10];float x;float y;struct City_List* next;
} City_List, * Lhead;int menu_select()	//菜单驱动程序
{int sn;      //sn用于接收菜单选项printf("城市管理系统\n");		//显示菜单printf("==============================\n");printf("1、创建城市链表\n");printf("2、根据城市名查询城市\n");printf("3、根据中心坐标距离查询城市\n");printf("0、退出\n");printf("==============================\n");printf("请选择0--3:");for (;;)		//菜单功能选择{scanf("%d", &sn);getchar();if (sn < 0 || sn > 3)          //判断菜单选项是否属于合理范围:0--4printf("输入选择错误,请重新选择 0--5:");elsebreak;}return sn;
}/*TODO:添加城市信息功能:添加城市信息到链表中,城市信息分为城市名称和城市坐标城市名称对应结构体City_List 的name,坐标对应结构体City_List 的x,yprintf("请输入城市名\n") 输入一个字符串,作为城市名;printf("请输入城市坐标\n") 输入两个浮点型f数字,中间用一个字符隔开;与Create_List函数联动之后的效果如下:输入END推出,输入其余值继续1请输入城市名LA请输入城市坐标1.00 2.00输入END推出,输入其余值继续1请输入城市名BA请输入城市坐标1.00 3.00输入END推出,输入其余值继续END参数:City_List *Lhead 是需要操作的链表返回值: 无*/
void Insert(City_List* Lhead) {//创造新节点City_List* newNode = (City_List*)malloc(sizeof(City_List));printf("请输入城市名\n");scanf("%s", newNode->name);printf("请输入城市坐标\n");scanf("%f %f", &newNode->x, &newNode->y);//使用头插法,把该新节点插入到链表中newNode->next = Lhead->next;Lhead->next = newNode;
}/*TODO:创建链表功能:创建链表,添加元素时提示:printf("输入END推出,输入其余值继续\n");如果录入END,停止添加;录入其他字符,则调用Insert方法,插入元素参数:City_List *Lhead 是需要操作的链表返回值: 无*/
void Create_List(City_List* Lhead) {while (1) {printf("输入END推出,输入其余值继续\n");char name[10];const char* t = "END";scanf("%s", name);if (!strcmp(name, t)) {break;}else {Insert(Lhead);}}
}/*TODO:搜索城市信息功能:通过城市姓名,搜索城市信息,提示:printf("请输入您要搜索的城市名\n");如果如果找到对应的城市信息,则打印城市坐标printf("城市坐标为%.2f,%.2f\n")未找到城市信息,提示printf("你要搜索的城市不存在\n");比如:请输入您要搜索的城市名AA城市坐标为1.00,2.00请输入您要搜索的城市名BA你要搜索的城市不存在参数:City_List *Lhead 是需要操作的链表返回值: 无*/
void Find_City(City_List* Lhead) {printf("请输入您要搜索的城市名\n");//临时存储用户输入的城市名char name[10];scanf("%s", name);City_List* p = Lhead;//指针,负责遍历该单链表int flag = 0;//标记变量while ((p = p->next) != NULL) {if (!strcmp(p->name, name)) {flag = 1;printf("城市坐标为%.2f,%.2f\n", p->x, p->y);}}if (flag == 0) {printf("你要搜索的城市不存在\n");}
}/*TODO:查询距离范围内城市功能:给定一个位置坐标P和一个距离D,返回所有与P的 距离小于等于D的城市。printf("请输入中心坐标\n");printf("请输入距离\n");计算距离判断:((x-Lhead->x)*(x-Lhead->x)+(y-Lhead->y)*(y-Lhead->y)<=distance*distance)如果找到符合要求的城市,打印出所有城市信息printf("城市名为%s\n");printf("城市坐标为%.2f,%.2f\n");如已有三座城市:LA(1.00,2.00) BA(1.00,3.00) CA(10.00,83.00),市中心(10.00,8.00)想查询距离市中心距离12以内的城市:请输入中心坐标10.00 8.00请输入距离12城市名为LA城市坐标为1.00,2.00城市名为BA城市坐标为1.00,3.00参数:City_List *Lhead 是需要操作的链表返回值: 无*/
void Find_City_Distance(City_List* Lhead) {//临时存储用户输入的中心坐标和距离float x = 0, y = 0;int d = 0;printf("请输入中心坐标\n");scanf("%f %f", &x, &y);printf("请输入距离\n");scanf("%d", &d);City_List* p = Lhead;//指针,负责遍历该单链表while ((p = p->next) != NULL) {if ((x - p->x) * (x - p->x) + (y - p->y) * (y - p->y) <= d * d) {printf("城市名为%s\n",p->name);printf("城市坐标为%.2f,%.2f\n",p->x,p->y);}}
}int main() {//声明一个全局数据变量,并将其初始化City_List* Lhead;Lhead = (City_List*)malloc(sizeof(City_List));Lhead->next = NULL;for (;;)						// 菜单驱动程序:无限循环菜单功能选择与调用相应功能函数,直到选择0 退出{switch (menu_select())	 // 调用菜单函数,按返回值选择功能函数{case 1:printf("创建城市链表\n");//功能1的函数调用Create_List(Lhead);break;case 2:printf("根据城市名查询城市\n");//功能2的函数调用Find_City(Lhead);break;case 3:printf("根据中心坐标距离查询城市\n");//功能3的函数调用Find_City_Distance(Lhead);break;case 0:printf("再见!\n");				//退出系统return 0;} // switch语句结束 } // for循环结束 return 0;
} // main()函数结束

三、线性表的减法(⭐⭐⭐)

【习题描述】 问题描述:

利用线性表的基本操作,实现在线性表A中删除线性表B中出现的元素。

基本要求及提示:

(1) 首先创建两个线性表表。

(2) 依次检查线性表B中的每个元素看它是否在线性表A中,若在,则将其删除。

(3) 要求程序通过一个主菜单进行控制,在主菜单界面通过选择菜单项的序号来调用各功能函数。

难度:⭐⭐⭐

#include<stdio.h>
#include<stdlib.h>#define ERROR 0
#define OK 1
#define TURE 1
#define FAULE -1#define Max_size 100
#define ElemType int//结构体定义
typedef struct {ElemType elem[Max_size];ElemType last;
} Seqlist;//函数声明
int menu_select();
int Add_A_List(Seqlist *);
int Del_A_List(Seqlist *);
int Add_B_List(Seqlist *);
int Del_B_List(Seqlist *);
int Auto_Del_List(Seqlist *, Seqlist *);
int printA(Seqlist *);
int printB(Seqlist);// main()函数
int main() {Seqlist ListA, ListB;ListA.last = -1; //注意应提前赋值ListB.last = -1;for (;;) {switch (menu_select()) {case 1:printf("增加线性表A中的元素\n");Add_A_List(&ListA);break;case 2:printf("删除线性表A中的元素\n");Del_A_List(&ListA);break;case 3:printf("增加线性表B中的元素\n");Add_B_List(&ListB);break;case 4:printf("删除线性表B中的元素\n");Del_B_List(&ListB);break;case 5:printf("计算机自动删除A中存在B中的元素\n");Auto_Del_List(&ListA, &ListB);break;case 6:printf("显示出A中的元素\n");printA(&ListA);break;case 7:printf("显示出B中的元素\n");printB(ListB);break;case 0:printf("欢迎下次使用\n");return 0;}}
} // main()函数结束//菜单驱动程序
int menu_select() {int sn;printf("===============================\n");printf("1、增加线性表A中的元素\n");printf("2、删除线性表A中的元素\n");printf("3、增加线性表B中的元素\n");printf("4、删除线性表B中的元素\n");printf("5、计算机自动删除A中存在B中的元素\n");printf("6、显示出A中的元素\n");printf("7、显示出B中的元素\n");printf("0、退出程序\n");printf("=================================\n");printf("输入0--7\n");for (;;) {scanf("%d", &sn);getchar();if (sn < 0 || sn > 7)printf("\n 输入错误,重新选择 0--7S: ");elsebreak;}return sn;
}
//增加线性表A中的元素
int Add_A_List(Seqlist *ListA) {char flag = 'Y';while (flag == 'y' || flag == 'Y') {if (ListA->last >= Max_size - 1) {printf("线性表A空间已满!\n\n");return ERROR;} elseListA->last++;printf("需要加入的数字为:\n");scanf("%d", &ListA->elem[ListA->last]);printf("\n");printf("继续输入吗?(y/n)");getchar();scanf("%c", &flag);printf("\n");}return OK;
}
//增加线性表B中的元素
int Add_B_List(Seqlist *ListB) {char flag = 'Y';while (flag == 'y' || flag == 'Y') {if (ListB->last >= Max_size - 1) {printf("线性表B空间已满!\n\n");return ERROR;} elseListB->last++;printf("需要加入的数字为:\n");scanf("%d", &ListB->elem[ListB->last]);printf("\n");printf("继续输入吗?(y/n)");getchar();scanf("%c", &flag);printf("\n");}return OK;
}
//删除线性表A中的元素
int Del_A_List(Seqlist *ListA) {int i = 0, n;char flag = 'Y';if (ListA->last == -1) {printf("线性表为空!\n\n");return FAULE;} else {printf("请输入你要删除的元素\n");scanf("%d", &n);while (n != ListA->elem[i] && i <= ListA->last)i++;if (i <= ListA->last) {printf("要删除的数字为%d\n", ListA->elem[i]);printf("你确定要删除这个通讯者的信息吗?(y/n) ");getchar();scanf("%c", &flag);if (flag == 'y' || flag == 'Y')for (i = i + 1; i <= ListA->last; i++)ListA->elem[i - 1] = ListA->elem[i];ListA->last--;return OK;} else {printf("元素不存在!\n\n");return FAULE;}}}
//删除线性表B中的元素
int Del_B_List(Seqlist *ListB) {int i, n;char flag;if (ListB->last == -1) {printf("线性表为空!\n\n");return FAULE;} else {printf("请输入你要删除的元素\n");scanf("%d", &n);while (n != ListB->elem[i] && i <= ListB->last)i++;if (i <= ListB->last) {printf("要删除的数字为%d\n", ListB->elem[i]);printf("你确定要删除这个通讯者的信息吗?(y/n) ");getchar();scanf("%c", &flag);if (flag == 'y' || flag == 'Y')for (i = n + 1; i <= ListB->last; i++)ListB->elem[i - 1] = ListB->elem[i];ListB->last--;return OK;} else {printf("元素不存在!\n\n");return FAULE;}}
}
//计算机自动删除A中存在B中的元素
/*TODO:性表B中的每个元素看它是否在线性表A中,若在,则将线性表A中的元素删除。!注意:禁止在验证时使用输出函数显示*/
int Auto_Del_List(Seqlist *ListA, Seqlist *ListB) {//TODO:for (int i = 0; i <= ListB->last; i++) {for (int j = 0; j <= ListA->last; j++) {if (ListA->elem[j] == ListB->elem[i]) {for (int x = j; x <= ListA->last - 1; x++) {ListA->elem[x] = ListA->elem[x + 1];}ListA->last--;}}}return 1;
}
//打印
int printA(Seqlist *ListA) {int i;if (ListA->last == -1) {printf("线性表A为空\n");return ERROR;}for (i = 0; i <= ListA->last; i++) {printf("%4d", ListA->elem[i]);}printf("\n");return OK;
}
//打印
int printB(Seqlist ListB) {int j;if (ListB.last == -1) {printf("线性表B为空\n");return ERROR;}for (j = 0; j <= ListB.last; j++) {printf("%4d", ListB.elem[j]);}printf("\n");return OK;
}

在这里插入图片描述

  • Java岛冒险记【从小白到大佬之路】
  • LeetCode每日一题–进击大厂
  • 算法
  • 数据结构|刷题专栏

相关文章:

【数据结构】夯实基础|线性表刷题01

作者&#xff1a;努力学习的大一在校计算机专业学生&#xff0c;热爱学习和创作。目前在学习和分享&#xff1a;算法、数据结构、Java等相关知识。博主主页&#xff1a; 是瑶瑶子啦所属专栏: 【数据结构|刷题专栏】&#xff1a;该专栏专注于数据结构知识&#xff0c;持续更新&a…...

Java怎么实现几十万条数据插入(30万条数据插入MySQL仅需13秒)

本文主要讲述通过MyBatis、JDBC等做大数据量数据插入的案例和结果。 30万条数据插入插入数据库验证实体类、mapper和配置文件定义User实体mapper接口mapper.xml文件jdbc.propertiessqlMapConfig.xml不分批次直接梭哈循环逐条插入MyBatis实现插入30万条数据JDBC实现插入30万条数…...

java多线程之线程的六种状态

线程的六种状态(1) NEW(初始状态)(2) TERMINATED(终止状态 / 死亡状态)(3) RUNNABLE(运行时状态)(4) TIMED_WAITING(超时等待状态)(5) WAITING(等待状态)(6) BLOCK(阻塞状态)sleep和wait的区别:操作系统里的线程自身是有一个状态的,但是java Thread 是对系统线程的封装,把这里的…...

UnixBench----x86架构openEuler操作系统上进行性能测试

【原文链接】UnixBench----x86架构openEuler操作系统上进行性能测试 &#xff08;1&#xff09;打开github上 UnixBench 地址&#xff0c;找到发布的tag &#xff08;2&#xff09;找到tar.gz包&#xff0c;右键复制链接 比如这里是 https://github.com/kdlucas/byte-unix…...

于Java8 Stream教程之collect()

目录 前言正文第一个小玩法 将集合通过Stream.collect() 转换成其他集合/数组&#xff1a;第二个小玩法 聚合&#xff08;求和、最小、最大、平均值、分组&#xff09;总结前言 本身我是一个比较偏向少使用Stream的人&#xff0c;因为调试比较不方便。 但是, 不得不说&#…...

Python

1、str 三个关键点&#xff1a; 正着数&#xff0c;0&#xff0c;1&#xff0c;2 反着数&#xff0c;0&#xff0c;-1&#xff0c;-2 str[a&#xff0c;b] 左闭右开 [a&#xff0c;b) str123456789 print(str) # 输出字符串 print(str[0:-1]) # 输…...

Spring框架中IOC和DI详解

Spring框架学习一—IOC和DI 来源黑马Spring课程&#xff0c;觉得挺好的 目录 文章目录Spring框架学习一---IOC和DI目录学习目标第一章 Spring概述1、为什么要学习spring&#xff1f;2、Spring概述【了解】【1】Spring是什么【2】Spring发展历程【3】Spring优势【4】Spring体系…...

本地快速搭建Kubernetes单机版实验环境(含问题解决方案)

Kubernetes是一个容器编排系统&#xff0c;用于自动化应用程序部署、扩展和管理。本指南将介绍Kubernetes的基础知识&#xff0c;包括基本概念、安装部署和基础用法。 一、什么是Kubernetes&#xff1f; Kubernetes是Google开发的开源项目&#xff0c;是一个容器编排系统&…...

FPGA控制DDS产生1CLK周期误差的分析(二)

前文简短的介绍了DDS的产生原理&#xff0c;其实相当的简单&#xff0c;所以也不需要多做解释&#xff0c;本文详细阐述一下在调试DDS的过程中所产生的一个bug 问题发现 正如上文所述&#xff0c;再用FPGA控制存储在rom中的波形信号输出之后&#xff0c;在上板之前&#xff0…...

这一次,吃了Redis的亏,也败给了GPT

关注【离心计划】&#xff0c;一起离开地球表面 背景 组内有一个系统中有一个延迟任务的需求&#xff0c;关于延迟任务常见的做法有时间轮、延迟MQ还有Redis Zset等方案&#xff0c;关于时间轮&#xff0c;这边小苏有一个大学时候做的demo&#xff1a; https://github.com/JA…...

第一章 信息化知识

1、信息是客观事物状态和运动特征的一种普遍形式&#xff0c;信息的概念存在两个基本的层次&#xff0c;即本体论层次和认识论层次&#xff1a; 本体论层次&#xff1a;就是事物的运动状态和状态变化方式的自我表述认识论层次&#xff1a;就是主体对于该事物的运动状态以及状态…...

如何用matlab工具箱训练一个SOM神经网络

本站原创文章&#xff0c;转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com本文展示如何用matlab工具箱训练一个SOM神经网络的DEMO并讲解其中的代码含义和相关使用说明- 01.SOM神经网络DEMO代码 -- 本文说明 -下面&#xff0c;我们先随机初始化一些样本点&#xff0c;然后…...

音视频技术开发周刊 | 285

每周一期&#xff0c;纵览音视频技术领域的干货。新闻投稿&#xff1a;contributelivevideostack.com。GPT-4 Office全家桶发布谷歌前脚刚宣布AI工具整合进Workspace&#xff0c;微软后脚就急匆匆召开了发布会&#xff0c;人狠话不多地祭出了办公软件王炸——Microsoft 365 Cop…...

安装flume

flume最主要的作用就是实时读取服务器本地磁盘的数据&#xff0c;将数据写入到hdfs中架构&#xff1a;开始安装一&#xff0c;上传压缩包&#xff0c;解压并更名解压&#xff1a;[rootsiwen install]# tar -zxf apache-flume-1.9.0-bin.tar.gz -C ../soft/[rootsiwen install]#…...

为工作排好优先级

工作&#xff0c;是干不完的&#xff0c;因此我们需要分清轻重缓急&#xff0c;为它们划分优先级&#xff0c;这样才不至于让自己手忙脚乱。 给手头的事情排上正确的优先级&#xff0c;是一项很重要的工作能力。 优先级有很多考量&#xff0c;并不是简单的先来后到的线性时间…...

超专业解析!10分钟带你搞懂Linux中直接I/O原理

我们先看一张图&#xff1a; 这张图大体上描述了 Linux 系统上&#xff0c;应用程序对磁盘上的文件进行读写时&#xff0c;从上到下经历了哪些事情。 这篇文章就以这张图为基础&#xff0c;介绍 Linux 在 I/O 上做了哪些事情。 文件系统 什么是文件系统 文件系统&#xff0…...

【C++】面试101,用两个栈实现队列,包含min函数的栈,有效括号序列,滑动窗口的最大值,最小的K个数,倒置字符串,排序子序列,跳跃,数字三角形,蓝肽子序列

目录 1. 用两个栈实现队列 2.包含min函数的栈 3.有效括号序列 4.滑动窗口的最大值 5.最小的K个数 6.倒置字符串 7.排序子序列 8.数字三角形&#xff08;蓝桥杯&#xff0c;学习一个大佬的博客....&#xff09; 9.跳跃&#xff08;蓝桥杯&#xff09; 10.蓝肽子序列 1. 用…...

WPF 认识WPF

什么是WPF?WPF是Windows Presentation Foundation(Windows展示基础)简称&#xff0c;顾名思义是专门编写表示层的技术。WPF绚丽界面如下&#xff1a;GUI发展及WPF历史&#xff1f;Windows系统平台上从事图形用户界面GUI(Graphic User Interface)已经经历了多次换代&#xff0c…...

【建议收藏】PHP单例模式详解以及实际运用

PHP单例模式详解以及实际运用 什么是单例模式? 首先我们百度百科他怎么说? 单例模式&#xff0c;属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例&#xff08;根据需要&#xff0c;也有可能一个线程中属于单例&#xff0c;如&a…...

【十二天学java】day04-流程控制语句

第一章 流程控制语句 在一个程序执行的过程中&#xff0c;各条语句的执行顺序对程序的结果是有直接影响的。所以&#xff0c;我们必须清楚每条语句的执行流程。而且&#xff0c;很多时候要通过控制语句的执行顺序来实现我们想要的功能。 1.1 流程控制语句分类 顺序结构 判断…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...