个人工商注册查询网站网站试运营

web/2025/9/29 6:05:14/文章来源:
个人工商注册查询网站,网站试运营,石家庄手机网站,项目类型和阶段内容介绍数据结构基础 学习内容概述 今天我开始学习数据结构#xff0c;重点理解了它在编程中的重要性。数据结构是为了高效访问数据而设计的一种数据组织和存储方式。它不仅仅关注数据的存储位置#xff0c;还关注数据元素之间的关系。 计算机科学家尼古拉斯沃斯提出了著名的公式重点理解了它在编程中的重要性。数据结构是为了高效访问数据而设计的一种数据组织和存储方式。它不仅仅关注数据的存储位置还关注数据元素之间的关系。 计算机科学家尼古拉斯·沃斯提出了著名的公式 算法 数据结构 程序 这说明数据结构与算法是程序设计的核心。数据结构就像战场上的排兵布阵设计良好的数据结构能让我们在处理问题时事半功倍。 内存的理解 数据结构的基础是对内存的理解。内存由许多存储单元组成每个单元都有唯一的地址。数据可以保存在连续的内存单元中也可以保存在分散的单元中。选择哪种方式取决于我们想如何组织和操作这些数据。 数据结构的逻辑结构 数据的逻辑结构主要描述数据元素之间的逻辑关系可以分为以下几类 集合结构数据元素之间只有属于同一集合的关系。 线性结构数据元素之间存在一对一的关系比如数组、链表等。 树形结构数据元素之间存在一对多的关系比如家谱、文件系统。 图形结构数据元素之间存在多对多的关系比如社交网络。 数据的存储结构 数据的存储结构是逻辑结构在计算机中的实现可以分为 顺序存储结构相邻的数据元素在内存中也相邻比如数组。 链式存储结构相邻的数据元素可以在内存中不相邻用指针链接比如链表。 索引存储结构在数据存储之外有一个索引目录比如数据库的索引。 散列存储结构通过计算关键字来确定数据存储地址比如散列表。 线性结构之数组 学习内容概述 在C语言中数组是具有相同类型数据元素的集合。数组的特点是访问速度快因为可以通过下标直接访问指定位置的元素。今天我学到了如何用C语言实现数组的基础操作。 代码示例数组的定义与操作 #include stdio.h #include stdlib.h// 动态数组结构体 typedef struct {int *data; // 指向动态数组的指针size_t size; // 当前数组中的元素个数size_t capacity; // 当前数组的容量可以容纳的最大元素个数 } DynamicArray;// 初始化动态数组 void initDynamicArray(DynamicArray *array, size_t initialCapacity) {array-data (int *)malloc(initialCapacity * sizeof(int)); // 分配初始内存array-size 0; // 初始化元素个数为0array-capacity initialCapacity; // 设置初始容量 }// 释放动态数组内存 void destroyDynamicArray(DynamicArray *array) {free(array-data); // 释放动态数组内存array-size 0; // 重置元素个数为0array-capacity 0; // 重置容量为0 }// 调整动态数组内存大小 void resizeDynamicArray(DynamicArray *array, size_t newCapacity) {array-data (int *)realloc(array-data, newCapacity * sizeof(int)); // 调整数组内存大小array-capacity newCapacity; // 更新容量 }// 获取动态数组长度元素个数 size_t getLength(const DynamicArray *array) {return array-size; // 返回数组中的元素个数 }// 在指定位置插入新元素 void insertAt(DynamicArray *array, size_t index, int element) {if (index array-size){return; // 忽略无效的插入位置}if (array-size array-capacity){size_t newCapacity array-capacity * 2; // 如果容量不足扩大容量resizeDynamicArray(array, newCapacity);}for (size_t i array-size; i index; i--){array-data[i] array-data[i - 1]; // 后移元素以腾出插入位置}array-data[index] element; // 在指定位置插入新元素array-size; // 更新元素个数 }// 在末尾插入新元素 void insertEnd(DynamicArray *array, int element) {insertAt(array, array-size, element); // 在末尾插入新元素 }// 删除指定位置的元素并返回被删除的元素 int deleteAt(DynamicArray *array, size_t index) {if (index array-size){return -1; // 忽略无效的删除位置}int deletedElement array-data[index]; // 获取被删除的元素for (size_t i index; i array-size - 1; i){array-data[i] array-data[i 1]; // 前移元素以填补删除位置}array-size--; // 更新元素个数return deletedElement; // 返回被删除的元素 }// 删除末尾的元素并返回被删除的元素 int deleteEnd(DynamicArray *array) {return deleteAt(array, array-size - 1); // 删除末尾的元素 }// 遍历所有的元素 void print(DynamicArray *array) {for (int i 0; i array-size; i){printf(%d , array-data[i]);}printf(\n); }int main() {DynamicArray myArray; // 声明动态数组// 初始化动态数组initDynamicArray(myArray, 2);printf(初始化动态数组,初始容量为2\n);// 向动态数组尾部插入元素insertEnd(myArray, 1);insertEnd(myArray, 2);printf(向动态数组尾部插入了2个元素\n);// 打印动态数组当前长度printf(动态数组当前长度:%zu\n, getLength(myArray));// 在索引1的位置插入元素3insertAt(myArray, 1, 3);printf(在索引1的位置插入元素3\n);// 再次打印动态数组当前长度printf(动态数组当前长度:%zu\n, getLength(myArray));// 删除索引1的元素printf(删除索引1的元素,该元素是%d\n, deleteAt(myArray, 1));// 删除动态数组末尾元素printf(删除动态数组末尾元素,该元素是%d\n, deleteEnd(myArray));// 释放动态数组内存destroyDynamicArray(myArray);printf(动态数组内存释放完成\n);return 0; } 通俗理解 数组就像是一排连续的储物柜每个储物柜都有一个编号下标你可以通过编号快速找到需要的物品数据。数组的长度一旦确定就不能改变这就好比一排储物柜数量固定了不能再增加新的储物柜。 线性结构之链表 学习内容概述 链表是由一系列结点组成的线性结构每个结点包含一个数据域和一个指针域。链表的优点是可以动态扩展不需要预先指定大小适合频繁插入和删除的场景。 代码示例链表的定义与操作 #include stdio.h #include stdlib.h// 链表节点结构 typedef struct Node {int data; // 节点存储的数据struct Node *next; // 指向下一个节点的指针 } Node;// 链表结构 typedef struct {Node *head; // 链表头节点指针size_t size; // 链表中的节点个数 } LinkedList;// 初始化链表 void initLinkedList(LinkedList *list) {list-head NULL; // 初始化头节点为空list-size 0; // 初始化节点个数为0 }// 返回链表的长度 size_t getLength(const LinkedList *list) {return list-size; // 返回链表的节点个数 }// 在指定位置插入元素 void insertAt(LinkedList *list, size_t index, int element) {if (index list-size){return; // 忽略无效的插入位置}Node *newNode (Node *)malloc(sizeof(Node)); // 创建新节点newNode-data element; // 设置新节点的数据if (index 0) // 如果插入的位置是头部{newNode-next list-head; // 将新节点的下一个节点指向当前的头节点list-head newNode; // 新节点成为新的头节点}else // 插入在链表的其他位置{Node *prevNode list-head; // 从头节点开始查找插入位置// 遍历到插入位置的前一个节点for (size_t i 0; i index - 1; i){prevNode prevNode-next; // 前一个节点指向下一个节点}newNode-next prevNode-next; // 将新节点的下一个节点指向前一个节点的下一个节点prevNode-next newNode; // 将前一个节点的下一个节点指向新节点}list-size; // 更新节点个数 }// 在末尾插入元素 void insertEnd(LinkedList *list, int element) {insertAt(list, list-size, element); // 在链表末尾插入元素 }// 删除指定位置的元素并返回被删除的元素 int deleteAt(LinkedList *list, size_t index) {if (index list-size) // 如果索引无效{return -1; // 返回-1表示删除失败}int deletedElement; // 存储被删除的元素值if (index 0) // 如果删除的是头节点{Node *temp list-head; // 保存当前头节点list-head temp-next; // 将头节点指向下一个节点deletedElement temp-data; // 记录被删除节点的数据free(temp); // 释放被删除节点的内存}else // 删除链表中间或尾部的节点{Node *prevNode list-head; // 从头节点开始查找删除位置// 遍历到删除位置的前一个节点for (size_t i 0; i index - 1; i){prevNode prevNode-next; // 前一个节点指向下一个节点}Node *temp prevNode-next; // 获取待删除的节点prevNode-next temp-next; // 将前一个节点的下一个节点指向待删除节点的下一个节点deletedElement temp-data; // 记录被删除节点的数据free(temp); // 释放被删除节点的内存}list-size--; // 更新节点个数return deletedElement; // 返回被删除的元素值 }// 删除末尾元素 int deleteEnd(LinkedList *list) {return deleteAt(list, list-size - 1); // 删除链表末尾的元素 }// 获取指定位置的元素 int getElementAt(const LinkedList *list, size_t index) {if (index list-size) // 如果索引无效{return -1; // 返回-1表示无效索引}Node *currentNode list-head; // 从头节点开始遍历for (size_t i 0; i index; i){currentNode currentNode-next; // 遍历到指定的索引}return currentNode-data; // 返回指定位置的元素 }// 修改指定位置的元素 void modifyAt(LinkedList *list, size_t index, int newValue) {if (index list-size) // 如果索引无效{return; // 忽略无效的修改位置}Node *currentNode list-head; // 从头节点开始遍历for (size_t i 0; i index; i){currentNode currentNode-next; // 遍历到指定的索引}currentNode-data newValue; // 修改节点的值 }// 释放链表内存 void destroyLinkedList(LinkedList *list) {Node *currentNode list-head; // 从头节点开始遍历while (currentNode ! NULL) // 遍历链表{Node *temp currentNode; // 保存当前节点currentNode currentNode-next; // 移动到下一个节点free(temp); // 释放每个节点的内存}list-head NULL; // 头节点置为空list-size 0; // 节点个数置为0 }int main() {LinkedList myList; // 声明链表initLinkedList(myList); // 初始化链表printf(初始化链表成功!\n);insertEnd(myList, 1); // 链表尾部插入元素1insertEnd(myList, 2); // 链表尾部插入元素2printf(向链表插入了2个元素\n);printf(链表长度为: %zu\n, getLength(myList)); // 获取链表长度insertAt(myList, 1, 3); // 在索引1处插入元素3printf(在索引1处插入元素3\n);printf(链表长度为: %zu\n, getLength(myList)); // 再次获取链表长度printf(索引1处的元素为: %d\n, getElementAt(myList, 1)); // 获取索引1处的元素modifyAt(myList, 0, 4); // 修改索引0处的元素printf(把索引0处的元素修改为4\n);printf(删除索引1处的元素,该元素值是: %d\n, deleteAt(myList, 1)); // 删除索引1处的元素destroyLinkedList(myList); // 销毁链表printf(链表销毁成功!\n);return 0; // 返回0表示程序正常结束 }通俗理解 链表就像是一串珍珠项链每颗珍珠节点都有一根线指针连接到下一颗珍珠。你可以随时在项链中加入或取出一颗珍珠而不需要重新排列所有珍珠因此链表非常适合需要频繁添加或删除数据的场景。 线性结构之栈 学习内容概述 今天我还学习了栈这一数据结构。栈是一种只能在表的一端进行插入和删除操作的线性表其特点是后进先出LIFO。栈的应用非常广泛比如函数调用栈、表达式求值等。 代码示例栈的实现基于数组 #include stdio.h #include stdlib.h// 栈结构 typedef struct {int *data; // 动态数组存储栈元素size_t size; // 栈内元素个数size_t capacity; // 动态数组的容量 } Stack;// 初始化栈 void initStack(Stack *stack, size_t capacity) {stack-data (int *)malloc(capacity * sizeof(int)); // 分配初始容量的内存stack-size 0; // 初始元素个数为0stack-capacity capacity; // 设置容量 }// 返回栈内元素个数 size_t getSize(const Stack *stack) {return stack-size; // 返回栈内元素个数 }// 添加新元素 void push(Stack *stack, int element) {if (stack-size stack-capacity) // 检查栈是否已满{// 如果栈已满需要扩展容量stack-capacity * 2; // 将容量翻倍stack-data (int *)realloc(stack-data, stack-capacity * sizeof(int)); // 重新分配内存}stack-data[stack-size] element; // 将元素压入栈顶stack-size; // 更新元素个数 }// 栈顶元素出栈并返回 int pop(Stack *stack) {if (stack-size 0) // 检查栈是否为空{return -1; // 栈为空返回无效值}stack-size--; // 更新元素个数return stack-data[stack-size]; // 返回栈顶元素 }// 释放栈内存 void destroyStack(Stack *stack) {free(stack-data); // 释放动态数组内存stack-data NULL; // 将指针置为NULL以避免悬挂指针stack-size 0; // 重置栈内元素个数stack-capacity 0; // 重置容量 }int main() {Stack myStack; // 声明一个栈变量// 初始化栈initStack(myStack, 2); // 设置初始容量为2printf(初始化栈,初始容量为2\n);// 向栈压入元素push(myStack, 1); // 压入元素1push(myStack, 2); // 压入元素2printf(栈内元素个数:%zu\n, getSize(myStack)); // 打印栈内元素个数// 弹出栈顶元素printf(弹出栈顶元素:%d\n, pop(myStack)); // 弹出栈顶元素并打印// 释放栈内存destroyStack(myStack); // 释放栈的内存printf(栈内存已释放\n);return 0; // 返回0表示程序正常结束 }通俗理解 栈就像是一摞书新的书只能放在最上面压栈取书也只能从最上面开始拿弹栈。这种“后进先出”的特点非常适合处理那些需要按相反顺序进行的操作比如浏览器的后退功能或者函数的递归调用。 线性结构之队列 学习内容概述 今天我学习了队列这一数据结构。队列是一种只能在一端插入数据在另一端删除数据的线性表其特点是先进先出FIFO。队列的应用也非常广泛比如任务调度、数据流处理等。 代码示例队列的实现基于数组 #include stdio.h #include stdlib.h// 队列结构 typedef struct {int *data; // 动态数组存储队列元素size_t size; // 队列内元素个数size_t capacity; // 动态数组的容量size_t front; // 队列头指针size_t rear; // 队列尾指针 } Queue;// 初始化队列 void initQueue(Queue *queue, size_t capacity) {queue-data (int *)malloc(capacity * sizeof(int)); // 分配初始容量的内存queue-size 0; // 初始元素个数为0queue-capacity capacity; // 设置容量queue-front 0; // 队列头指针初始化queue-rear 0; // 队列尾指针初始化 }// 返回队列内元素个数 size_t getSize(const Queue *queue) {return queue-size; // 返回队列当前元素个数 }// 添加新元素 void enqueue(Queue *queue, int element) {if (queue-size queue-capacity) // 检查队列是否已满{printf(队列已满添加失败\n); // 输出提示信息return; // 队列已满无法添加新元素}queue-data[queue-rear] element; // 将元素添加到队列尾部queue-rear (queue-rear 1) % queue-capacity; // 循环更新队列尾指针queue-size; // 更新元素个数 }// 元素出队列 int dequeue(Queue *queue) {if (queue-size 0) // 检查队列是否为空{return -1; // 队列为空返回无效值}int dequeuedElement queue-data[queue-front]; // 获取队列头部元素queue-front (queue-front 1) % queue-capacity; // 循环更新队列头指针queue-size--; // 更新元素个数return dequeuedElement; // 返回出队的元素 }// 释放队列内存 void destroyQueue(Queue *queue) {free(queue-data); // 释放动态数组内存queue-data NULL; // 将指针置为NULL以避免悬挂指针queue-size 0; // 重置队列元素个数queue-capacity 0; // 重置队列容量queue-front 0; // 重置队列头指针queue-rear 0; // 重置队列尾指针 }// 遍历队列并打印元素 void printQueue(Queue *queue) {for (size_t i queue-front, j 0; j queue-size; i, j){int data queue-data[i % queue-capacity]; // 计算实际索引并获取元素printf(%d , data); // 打印元素}printf(\n); // 换行 }int main() {Queue myQueue; // 声明一个队列变量// 初始化队列initQueue(myQueue, 2); // 设置初始容量为2printf(初始化队列,初始容量为2\n);// 入队元素enqueue(myQueue, 1); // 添加元素1到队列enqueue(myQueue, 2); // 添加元素2到队列printf(队列内元素个数:%zu\n, getSize(myQueue)); // 打印队列内元素个数// 出队元素printf(出队元素:%d\n, dequeue(myQueue)); // 弹出队列头部元素并打印// 释放队列内存destroyQueue(myQueue); // 释放队列的内存printf(队列内存已释放\n);return 0; // 返回0表示程序正常结束 }通俗理解 队列就像排队买票的人群新的顾客只能站到队伍的末尾入队而服务总是从队伍的最前面开始出队。这种“先进先出”的特点非常适合任务调度的场景比如打印机任务或者操作系统中的进程管理。 心得总结 栈的“后进先出”特性在程序设计中非常有用尤其是处理递归调用或需要逆序操作的场景。通过实际编写代码我更好地理解了栈的工作原理并体验到了栈在内存管理和函数调用中的重要性。对于实现栈我学到了基于数组的顺序栈和基于链表的链式栈的不同实现方式分别有各自的优缺点选择时需要根据具体场景进行权衡。通过学习队列我理解了队列的先进先出特性以及它在数据处理和任务调度中的重要性。通过编写队列代码我更好地理解了如何用数组实现队列并学会了如何判断队列的空和满情况。对于队列的实现还可以使用链表来实现一个动态队列这样就不再受限于数组的固定大小。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自己建设的网站如何优化购物平台软件开发

文章目录 7.1 常用方法 参考操作数组的工具类:Arrays,Collections 是一个操作 Set、List 和 Map 等集合的工具类。 7.1 常用方法 Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、…

专业彩票网站开发做地产网站哪家好

1、基本原理介绍 这里介绍的单指模型迁移。一般我们训练模型时,往往会自定义一个模型类,这个类中定义了神经网络的结构,训练时将数据集输入,从0开始训练;而迁移学习中(单指模型迁移策略)&#x…

改进网站建设英文作文免费域名 网站

本图像处理系列笔记是基于B站杨淑莹老师的课程进行学习整理的。 文章目录黑白图像8位灰度索引图像8位伪彩色索引图像24位真彩色图像图像文件格式BMP文件存储格式BMP文件头位图信息头颜色表位图信息——BITMAPINFO结构BMP位图文件汇总按照颜色深度分类,常用图像文件&…

中国万网域名注册价格关键词seo自然排名优化

最热建筑安装工程计算表格,输入后自动生成,省时方便易上手!工程量计算是每一个造价从业者必备技能。但是要保证计算过程中不能有一丝丝差错,实在是一件令人头疼的事情,因为步骤比较繁杂,并且算量大&#xf…

网站页面如何设计图百度指数平台官网

PD虚拟机(Parallels Desktop 虚拟机)是一款知名的系统虚拟化软件,PD虚拟机允许用户在一个操作系统中同时运行另一个或者多个操作系统。这种技术在多种场景中非常有用,比如程序开发、专业研究、游戏对战等,尤其是对于需…

河北省建设厅工程信息网站网页设计师培训学费

**上节课我们为这个项目获取了一些DOM元素,现在我们可以继续;**这个模态窗口有一个hidden类,这个类上文我们讲了,他的display为none;如果我们去除这个hidden的话,就可以让这个模态窗口展现出来。如下 cons…

怎么做网站呀wordpress批量修改文章内容

C/C++等级考试(1~8级)全部真题・点这里 第1题:小白鼠再排队 N只小白鼠(1 < N < 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。帽子的颜色用 “red”,“blue”等字符串来表示。不同的小白…

ru后缀的网站青岛建网站的公司

在电商业务蓬勃发展的当下&#xff0c;亚马逊已经成为全球最大的电商平台之一&#xff0c;拥有庞大的用户群和交易量。在激烈的市场竞争中&#xff0c;如何有效地吸引流量成为亚马逊店铺经营者所关注的重点。海外云手机作为一项新兴技术工具&#xff0c;为亚马逊店铺的流量引导…

什么网站做首页在线制作名片免费

单道环境下四个作业&#xff0c;它们进入系统的时间如下&#xff1a;作业进入时间估计运行时间&#xff08;分钟&#xff09;JOB18:00120JOB28:5050JOB39:0010JOB49:5020(1)给出FCFS , SJF&#xff0c;HRN下的作业执行次序(2)给出FCFS , SJF, HRN下的作业平均周转时间和带权平均…

网站建设公司企业模板下载jsp网站开发工资

本文记录了在部署高可用的k8s集群时&#xff0c;遇到的一个故障及其解决方法。 集群环境 描述&#xff1a;三主三从&#xff0c;eth0为外网网卡&#xff0c;eth1为内网网卡&#xff0c;内网互通。 需求&#xff1a;eth0只负责访问外网&#xff0c;eth1作为集群间的通信。 主…

辽宁注册公司网站jsp网站开发中js的问题

第二天-Python环境境安装及简单程序的编写 一.Python的安装 1.首先进入网站下载&#xff1a;点击打开链接&#xff08;或自己输入网址https://www.python.org/downloads/&#xff09;&#xff0c;进入之后如下图&#xff0c;选择适合自己操作系统的版本进行下载。2.下载完成后如…

为某网站做网站推广策划方案衡阳做网站的

每次使用单边大脑的时间不要太久&#xff0c; 连续使用左边脑30 分钟如同使用左臂 30 分钟一样&#xff0c; 周期性性地交换让大脑两侧轮流休息。 左脑活动包括了循序渐进的工作&#xff0c;解决逻辑问题与分析&#xff1b; 右脑的活动包括了阴雨、创造性思考、模式匹配与可视化…

网站建设需要摊销吗备案 网站名称 修改

一、说明 本篇介绍模型模型的参数&#xff0c;模型推理和使用&#xff0c;保存加载。 二、训练参数和模型 在本单元中&#xff0c;我们将了解如何加载模型及其持久参数状态和推理模型预测。为了加载模型&#xff0c;我们将定义模型类&#xff0c;其中包含用于训练模型的神经网…

在百度建免费网站橙网站

改变原数组的方法&#xff1a; push() - 将一个或多个元素添加到数组的末尾&#xff0c;并返回新数组的长度。 pop() - 从数组中移除最后一个元素&#xff0c;并返回该元素。 shift() - 从数组中移除第一个元素&#xff0c;并返回该元素。 unshift() - 将一个或多个元素添加到…

上海住房和城乡建设部网站首页为新创业公司建设网站

4. 全局位姿对齐(glob pose alignment) 输入系统的是使用消费级的传感器获取的RGBD数据流&#xff0c;并且保证这些数据中的彩色图像和深度图像是时间和空间上都对齐的。图像分辨率是640x480,频率是30hz。我们的目的就是要找到frames之间的3D对应&#xff0c;然后根据这些对应…

福州网站建设教程视频机器人网站建设规划书

多径信道模型(Multipath Channel Scenario) 信道脉冲响应(Channel Impulse Response, CIR) 信道的复基带脉冲响应如下所示 h ( τ ; t ) = ∑ l = 1 L a l ( t

四川网站建设找哪家公司注册资本可以随便填吗

S110 指的是从设备的协议栈 S120 指的是主设备的协议栈 S130 SoftDevice是符合蓝牙4.1规范的协议堆栈&#xff0c;包含了所有蓝牙智能协议层直至包含GATT/GAP。它支持多链路中心、周边、观察器和播送器任务、GATT服务器和客户机&#xff0c;以及由事件驱动、异步和线程安全的G…

单色系网站设计有哪些三水区网站建设

京东详情API接口在电子商务中的应用与作用性体现在多个方面&#xff0c;对于电商平台、商家以及用户都带来了显著的价值。 首先&#xff0c;从应用的角度来看&#xff0c;京东详情API接口为开发者提供了一整套丰富的功能和工具&#xff0c;使他们能够轻松地与京东平台进行交互。…

手机网站内容设计方案深圳找工作哪个网站好

QSS简介 QSS&#xff08;Qt Style Sheet&#xff09;样式表是一种用于描述图形用户界面&#xff08;GUI&#xff09;样式的语言。它允许开发者为应用程序的控件定义视觉外观&#xff0c;例如颜色、字体、尺寸和布局等。 QSS 样式表的主要目的是提供一种简洁而灵活的方式来美化…