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

栈和队列相关|有效的括号|用队列实现栈|用栈实现队列|设计循环队列(C)

20. 有效的括号


判断左右括号是否匹配,匹配返回true,不匹配返回false
通过栈来实现,类型和顺序,数量都要匹配
控制数量通过size
每个右括号都要找最近的左括号去判断类型匹配不匹配,顺序匹配不匹配
最后来判断数量匹配不匹配

  1. 左括号,入栈
  2. 右括号,出栈顶括号,进行匹配
栈接口
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>typedef char STDataType;
typedef struct Stack
{STDataType* a;int top;int capacity;
}ST;void STInit(ST* ps)
{assert(ps);ps->a = NULL;ps->capacity = 0;ps->top = 0;
}void STDestroy(ST* ps)
{assert(ps);free(ps->a);ps->a = NULL;ps->top = ps->capacity = 0;
}void STPush(ST* ps, STDataType x)
{assert(ps);// 11:40if (ps->top == ps->capacity){int newCapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;STDataType* tmp = (STDataType*)realloc(ps->a, sizeof(STDataType) * newCapacity);if (tmp == NULL){perror("realloc fail");exit(-1);}ps->a = tmp;ps->capacity = newCapacity;}ps->a[ps->top] = x;ps->top++;
}void STPop(ST* ps)
{assert(ps);// assert(ps->top > 0);--ps->top;
}STDataType STTop(ST* ps)
{assert(ps);// assert(ps->top > 0);return ps->a[ps->top - 1];
}int STSize(ST* ps)
{assert(ps);return ps->top;
}bool STEmpty(ST* ps)
{assert(ps);return ps->top == 0;
}
if版本

bool isValid(char * s){ST st;STInit(&st);char top;while(*s){if (*s == '[' || *s == '(' || *s == '{'){STPush(&st, *s);}else{//数量不匹配if (STEmpty(&st)){STDestroy(&st);return false;}top = STTop(&st);STPop(&st);//顺序不匹配if((*s == ']' && top != '[')|| (*s == ')' && top != '(')|| (*s == '}' && top != '{')){STDestroy(&st);return false;}}++s;}// 栈不为空,false,说明数量不匹配bool ret = STEmpty(&st);STDestroy(&st);return ret;
}
switch版本
bool isValid(char * s){ST st;STInit(&st);char top;while (*s){switch(*s){case '[':case '(':case '{':STPush(&st, *s);break;case '}':// 数量不匹配if (STEmpty(&st))return false;top = STTop(&st);STPop(&st);// 顺序不匹配if (top != '{')return false;break;case ']':// 数量不匹配if (STEmpty(&st))return false;top = STTop(&st);STPop(&st);//顺序不匹配if (top != '[')return false;break;case ')':// 数量不匹配if (STEmpty(&st))return false;top = STTop(&st);STPop(&st);//顺序不匹配if (top != '(')return false;break;}++s;}//数量不匹配bool ret = STEmpty(&st);STDestroy(&st);return ret;
}

225. 用队列实现栈


用两个队列实现栈

Push 1 2 3 4
![[Pasted image 20241030145528.png]]

Pop 4
分别出1 2 3,插入到另一个队列,最后剩下4,把最后一个数据Pop掉
![[Pasted image 20241030150220.png]]

![[Pasted image 20241030150525.png]]

Push 5 6
入到不为空的那个队列里
![[Pasted image 20241030150637.png]]

空队列是用来倒数据的

Pop 6
![[Pasted image 20241030151026.png]]

入队列:不为空的队列
出队列:不为空队列前N-1个出队列,插入空队列;删除剩余数据

队列接口
typedef int QDataType;
typedef struct QueueNode
{struct QueueNode* next;QDataType data;
}QNode;typedef struct Queue
{QNode* head;QNode* tail;int size;
}Que;void QueueInit(Que* pq);
void QueueDestroy(Que* pq);
void QueuePush(Que* pq, QDataType x);
void QueuePop(Que* pq);
QDataType QueueFront(Que* pq);
QDataType QueueBack(Que* pq);
bool QueueEmpty(Que* pq);
int QueueSize(Que* pq);void QueueInit(Que* pq)
{assert(pq);pq->head = pq->tail = NULL;pq->size = 0;
}void QueueDestroy(Que* pq)
{assert(pq);QNode* cur = pq->head;while (cur){QNode* next = cur->next;free(cur);cur = next;}pq->head = pq->tail = NULL;pq->size = 0;
}void QueuePush(Que* pq, QDataType x)
{assert(pq);QNode* newnode = (QNode*)malloc(sizeof(QNode));if (newnode == NULL){perror("malloc fail");exit(-1);}newnode->data = x;newnode->next = NULL;if (pq->tail == NULL){pq->head = pq->tail = newnode;}else{pq->tail->next = newnode;pq->tail = newnode;}pq->size++;
}void QueuePop(Que* pq)
{assert(pq);assert(!QueueEmpty(pq));if (pq->head->next == NULL){free(pq->head);pq->head = pq->tail = NULL;}else{QNode* next = pq->head->next;free(pq->head);pq->head = next;}pq->size--;
}QDataType QueueFront(Que* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->head->data;
}QDataType QueueBack(Que* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->tail->data;
}bool QueueEmpty(Que* pq)
{assert(pq);return pq->head == NULL;
}int QueueSize(Que* pq)
{assert(pq);return pq->size;
}
队列实现栈

![[Pasted image 20241030160553.png]]

typedef struct {Que q1;Que q2;
} MyStack;MyStack* myStackCreate() {MyStack* pst = (MyStack*)malloc(sizeof(MyStack));QueueInit(&pst->q1);QueueInit(&pst->q2);return pst;
}void myStackPush(MyStack* obj, int x) {if (!QueueEmpty(&obj->q1)){QueuePush(&obj->q1, x);}else{QueuePush(&obj->q2, x);}
}int myStackPop(MyStack* obj) {Que* empty = &obj->q1;Que* nonempty = &obj->q2;if (!QueueEmpty(&obj->q1)){nonempty = &obj->q1;empty = &obj->q2;}while(QueueSize(nonempty) > 1){// 前size-1个导入空队列QueuePush(empty, QueueFront(nonempty));QueuePop(nonempty);}int top = QueueFront(nonempty);QueuePop(nonempty);return top;
}int myStackTop(MyStack* obj) {if (!QueueEmpty(&obj->q1)){return QueueBack(&obj->q1);}else{return QueueBack(&obj->q2);}
}bool myStackEmpty(MyStack* obj) {return QueueEmpty(&obj->q1) && QueueEmpty(&obj->q2);
}void myStackFree(MyStack* obj) {QueueDestroy(&obj->q1);QueueDestroy(&obj->q2);free(obj);
}

232. 用栈实现队列


用两个栈来实现队列
Push 1 2 3 4
![[Pasted image 20241030185925.png]]

Pop 1
把数据往另一个栈里倒
![[Pasted image 20241030190053.png]]

Push 5 6
![[Pasted image 20241030190441.png]]

存数据的栈称为pushst,出数据的栈称为popst

栈接口
typedef int STDataType;
typedef struct Stack
{STDataType* a;int top;int capacity;
}ST;void STInit(ST* ps)
{assert(ps);ps->a = NULL;ps->capacity = 0;ps->top = 0;
}void STDestroy(ST* ps)
{assert(ps);free(ps->a);ps->a = NULL;ps->top = ps->capacity = 0;
}void STPush(ST* ps, STDataType x)
{assert(ps);// 11:40if (ps->top == ps->capacity){int newCapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;STDataType* tmp = (STDataType*)realloc(ps->a, sizeof(STDataType) * newCapacity);if (tmp == NULL){perror("realloc fail");exit(-1);}ps->a = tmp;ps->capacity = newCapacity;}ps->a[ps->top] = x;ps->top++;
}void STPop(ST* ps)
{assert(ps);// assert(ps->top > 0);--ps->top;
}STDataType STTop(ST* ps)
{assert(ps);// assert(ps->top > 0);return ps->a[ps->top - 1];
}int STSize(ST* ps)
{assert(ps);return ps->top;
}bool STEmpty(ST* ps)
{assert(ps);return ps->top == 0;
}
栈实现队列

typedef struct {ST pushst;ST popst;
} MyQueue;MyQueue* myQueueCreate() {MyQueue* obj = (MyQueue*)malloc(sizeof(MyQueue));STInit(&obj->pushst);STInit(&obj->popst);return obj;
}void myQueuePush(MyQueue* obj, int x) {STPush(&obj->pushst, x);
}int myQueuePeek(MyQueue* obj) {if(STEmpty(&obj->popst)){// 倒数据while(!STEmpty(&obj->pushst)){STPush(&obj->popst, STTop(&obj->pushst));STPop(&obj->pushst);}}return STTop(&obj->popst);
}int myQueuePop(MyQueue* obj) {int front = myQueuePeek(obj);STPop(&obj->popst);return front;
}bool myQueueEmpty(MyQueue* obj) {return STEmpty(&obj->popst) && STEmpty(&obj->pushst);
}void myQueueFree(MyQueue* obj) {STDestroy(&obj->popst);STDestroy(&obj->pushst);free(obj);
}

622. 设计循环队列


![[Pasted image 20241030200421.png]]

循环队列
Pop 1
![[Pasted image 20241030200445.png]]

Push 5
在这里插入图片描述

Pop 2
![[Pasted image 20241030200620.png]]

Push 6
![[Pasted image 20241030200639.png]]

当队列为空
![[Pasted image 20241030200914.png]]

front和rear相等,队列为空
插入一个数据,rear往后走
rear不是指向最后一个数据,而是指向最后一个数据的下一个位置

如何判断队列满

多开一个空间
k == 4,表示队列只能存四个数
![[Pasted image 20241030202645.png]]

front == rear 空
rear的下一个就是front 满

  • rear在中间的情况
    ![[Pasted image 20241030205436.png]]
(rear + 1)% (k + 1) == front
取队尾

![[Pasted image 20241030212834.png]]

![[Pasted image 20241030212743.png]]

(rear + (k + 1) - 1) % (k + 1)

循环队列实现
typedef struct {int* a;int front;int rear;int k;
} MyCircularQueue;MyCircularQueue* myCircularQueueCreate(int k) {MyCircularQueue* obj = (MyCircularQueue*)malloc(sizeof(MyCircularQueue));// 多开一个方便区分空和满obj->a = (int*)malloc(sizeof(int)*(k+1));obj->front = obj->rear = 0;obj->k = k;return obj;
}bool myCircularQueueIsEmpty(MyCircularQueue* obj) {return obj->front == obj->rear;
}bool myCircularQueueIsFull(MyCircularQueue* obj) {return (obj->rear + 1)%(obj->k + 1) == obj->front;
}bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) {if(myCircularQueueIsFull(obj))return false;obj->a[obj->rear] = value;obj->rear++;obj->rear %= (obj->k + 1);return true;
}bool myCircularQueueDeQueue(MyCircularQueue* obj) {if (myCircularQueueIsEmpty(obj))return false;++obj->front;obj->front %= (obj->k + 1);return true;
}int myCircularQueueFront(MyCircularQueue* obj) {if (myCircularQueueIsEmpty(obj))return -1;elsereturn obj->a[obj->front];
}int myCircularQueueRear(MyCircularQueue* obj) {if (myCircularQueueIsEmpty(obj))return -1;else//(rear + (k + 1) - 1) % (k + 1)return obj->a[(obj->rear + obj->k) % (obj->k + 1)];
}void myCircularQueueFree(MyCircularQueue* obj) {free(obj->a);free(obj);
}

相关文章:

栈和队列相关|有效的括号|用队列实现栈|用栈实现队列|设计循环队列(C)

20. 有效的括号 判断左右括号是否匹配&#xff0c;匹配返回true&#xff0c;不匹配返回false 通过栈来实现&#xff0c;类型和顺序&#xff0c;数量都要匹配 控制数量通过size 每个右括号都要找最近的左括号去判断类型匹配不匹配&#xff0c;顺序匹配不匹配 最后来判断数量匹配…...

云原生后端开发教程

云原生后端开发教程 引言 随着云计算的普及&#xff0c;云原生架构逐渐成为现代软件开发的主流。云原生不仅仅是将应用部署到云上&#xff0c;而是一种构建和运行应用的方式&#xff0c;充分利用云计算的弹性和灵活性。本文将深入探讨云原生后端开发的核心概念、工具和实践&a…...

TortoiseSVN小乌龟下载安装(Windows11)

目录 TortoiseSVN 1.14.7工具下载安装 TortoiseSVN 1.14.7 工具 系统&#xff1a;Windows 11 下载 官网&#xff1a;https://tortoisesvn.subversion.org.cn/downloads.html如图选 TortoiseSVN 1.14.7 - 64 位 下载完成 安装 打开 next&#xff0c;next Browse&#xf…...

Android adb命令获取设备id

Android adb命令获取设备id 方式很多&#xff0c;以下均可获得Android device id&#xff1a; adb shell settings get secure android_id adb shell settings get secure android_id adb devices -l adb shell content query --uri content://settings/secure --where "…...

Skywalking教程一

Skywalking教程一 概述Skywalking功能特点&#xff1a; 概述 一个大型分布式系统架构&#xff0c;监控平台是必不可少的&#xff0c;常用的分布式系统监控平台有&#xff1a;SkyWalking和Prometheus。Skywalking是一款比较优秀的分布式系统监控平台&#xff0c;一款分布式系统…...

React中管理state的方式

使用useState 使用useReducer 既然已经有了useState&#xff0c;为什么还需要useReducer呢&#xff1f; 那么useReducer是如何将解决这些问题的呢&#xff1f; reducer是如何更新state的呢&#xff1f; reducer的工作方式非常类似JavaScript中的reduce方法&#xff0c;随着时…...

服务器数据恢复—RAID5阵列中部分成员盘重组RAID5阵列后如何恢复原raid5阵列数据?

服务器数据恢复环境&#xff1a; 一台服务器挂接一台存储&#xff0c;该存储中有一组由5块硬盘组建的RAID5阵列。 服务器故障&#xff1a; 存储raid5阵列中有一块硬盘掉线。由于RAID5的特性&#xff0c;阵列并没有出现问题。工作一段时间后&#xff0c;服务器出现故障&#xff…...

【Linux】文件切割排序 cut sort

文章目录 Linux文件切割命令&#xff1a;cut1. cut命令的基本用法2. cut命令的选项和参数3. cut命令的实际应用案例 Linux文件排序命令&#xff1a;sort1. sort命令的基本用法2. sort命令的选项和参数3. sort命令的实际应用案例 常见问题和解决方案1. cut和sort命令的联合使用2…...

零售EDI:HornBach EDI 项目案例

HornBach 是一家总部位于德国的家居和建筑材料零售商&#xff0c;成立于1968年。它以大型仓储式商店而闻名&#xff0c;提供广泛的产品&#xff0c;包括建筑材料、园艺、家居装饰和工具等。 近期我们帮助HornBach的供应商W公司成功实现了与HornBach的EDI直连&#xff0c;除了满…...

SpringBoot 集成RabbitMQ 实现钉钉日报定时发送功能

文章目录 一、RabbitMq 下载安装二、开发步骤&#xff1a;1.MAVEN 配置2. RabbitMqConfig 配置3. RabbitMqUtil 工具类4. DailyDelaySendConsumer 消费者监听5. 测试延迟发送 一、RabbitMq 下载安装 官网&#xff1a;https://www.rabbitmq.com/docs 二、开发步骤&#xff1a;…...

基于java ssm springboot女士电商平台系统源码+文档设计

基于java ssm springboot女士电商平台系统源码文档设计 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统…...

Matlab数字信号处理——基于改进小波变换的图像去噪方法(7种去噪算法)

1.基于小波变换的阈值收缩法去噪 该方法利用小波变换分离出信号中的噪声成分&#xff0c;并通过设置合适的阈值对小波系数进行收缩&#xff0c;保留主要信息的同时&#xff0c;去除噪声。 %基于小波变换的阈值收缩法去噪算法 clear clc Iimread(nana.png); X im2double(I); …...

leetcode hot100【LeetCode 70. 爬楼梯】java实现

LeetCode 70. 爬楼梯 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a; 给定 n 是一个正整数。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&…...

Java异常2

异常抛出的两种形式&#xff1a; 系统隐式抛出&#xff1b;int n10/0;—隐式抛出一个异常&#xff1b;手动抛出异常&#xff1a;throw new Exception(); import java.util.InputMismatchException; import java.util.Scanner;public class Main {public static void main(Str…...

2024熵密杯初始题2

问题简要&#xff1a; 已知 counter 0x7501E6EA token 0xF4CE927C79B616E8E8F7223828794EEDF9B16591AE572172572D51E135E0D21A 伪造出另一个可以通过验证的counter和token。 给出token生成及验证代码如下&#xff1a; import binascii from gmssl import sm3# 读取HMAC ke…...

echarts属性之title

title 标题组件&#xff0c;包含主标题和副标题。 在 ECharts 2.x 中单个 ECharts 实例最多只能拥有一个标题组件。但是在 ECharts 3 中可以存在任意多个标题组件&#xff0c;这在需要标题进行排版&#xff0c;或者单个实例中的多个图表都需要标题时会比较有用。 例如下面不…...

VUE errolog, vue 错误集

I) installation As to command “npm install” on cmd or powershell, we must execute it under the program folder...

驱动开发系列13 - Linux tasklet用法介绍

一:概述 Tasklet 是 Linux 内核中的一种轻量级任务调度机制,通常用于在中断上下文中执行短小的任务。它们在软中断处理过程中被调用,允许将较长的处理工作延后到一个较低优先级的上下文中,以减少中断处理的延迟。Tasklet 的使用可以帮助开发者更好地管理系统资源,提高性能…...

redis实现分布式锁,go实现完整code

Redis分布式锁 Redis 分布式锁是一种使用 Redis 数据库实现分布式锁的方式&#xff0c;可以保证在分布式环境中同一时间只有一个实例可以访问共享资源。 实现机制 以下是实现其加锁步骤&#xff1a; 获取锁 在 Redis 中&#xff0c;一个相同的key代表一把锁。是否拥有这把锁&…...

解析日期、编码

解析日期 这里指的是将字符串或者object类型的日期&#xff0c;转换成panda或python的日期类型。 主要的是dtype的变化&#xff1a;object / str —> datetime64[ns] # modules well use import pandas as pd import numpy as np import seaborn as sns import datetime# …...

【Qt】QApplication::restoreOverrideCursor():恢复鼠标光标到原始状态的用法解析

restoreOverrideCursor() 是 Qt 中 QApplication 类提供的一个静态函数&#xff0c;用来恢复鼠标光标到应用程序之前设置的状态。 在 Qt 中&#xff0c;你可以使用 QApplication::setOverrideCursor() 来临时更改鼠标光标的外观。例如&#xff0c;当执行一些耗时操作时&#x…...

重生之“我打数据结构,真的假的?”--2.单链表(无习题)

C语言中的单链表总结 单链表是一种基础的数据结构&#xff0c;广泛应用于C语言编程中。它由节点组成&#xff0c;每个节点包含数据和指向下一个节点的指针。单链表的优点在于动态内存分配和高效的插入与删除操作。本文将详细探讨单链表的定义、基本操作、应用场景以及相关示例…...

【有啥问啥】视频插帧算法技术原理详解

视频插帧算法技术原理详解 引言 视频插帧&#xff08;Video Interpolation&#xff09;技术&#xff0c;作为计算机视觉领域的一项重要应用&#xff0c;旨在通过算法手段在已有的视频帧之间插入额外的帧&#xff0c;从而提升视频的帧率&#xff0c;使其看起来更加流畅。这一技…...

Leetcode148,109以及二者的合并 -> Tencent面试算法题 - 无序双向链表转BST

根源简述 这道题是腾讯在2024/8/30考的一道面试题&#xff0c;整体来说&#xff0c;难度不大&#xff0c;就是代码量稍稍有点儿大&#xff0c;让我们一起来看一下吧 题目描述 整数无序双向链表能否转BST&#xff08;二叉搜索树&#xff09;&#xff0c;如果能&#xff0c;怎么转…...

【蓝桥杯选拔赛真题77】python计算小球 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析

目录 python计算小球 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python计算小球 第十五届蓝桥杯青少年组python比赛选拔赛真题 一、题目要…...

获取Hive表备注

DESCRIBE EXTENDED 表名;先获取Detailed Table Information这行的data_type字段数据&#xff0c;进行正则匹配&#xff0c;拿到表备注&#xff0c;如下&#xff1a; String str ReUtil.get("parameters:\\{(?!.*?\\().*transient_lastDdlTime.*?comment(.*?)\\}&quo…...

10.30学习

一、科学计数法 C语言中的科学计数法主要用于表示非常大或非常小的浮点数&#xff0c;它遵循以下格式&#xff1a; 1. E或e表示指数&#xff1a; 科学计数法中的E或e用来表示“指数”&#xff08;Exponent&#xff09;。例如&#xff0c; 1.23e4 或 1.23E4 表示 1.23 * 10^4…...

什么是栈溢出

一、什么是栈溢出 栈溢出&#xff08;Stack Overflow&#xff09;就是指在程序运行过程中&#xff0c;往栈里存放的数据超过了栈所能容纳的最大容量&#xff0c;从而导致程序出现异常行为的情况。这就好比一个箱子本来只能装一定数量的物品&#xff0c;硬要往里面塞更多的东西&…...

在linux中arm-linux-gcc和/usr/bin/gcc有啥区别

在Linux中&#xff0c;arm-linux-gcc和/usr/bin/gcc都是编译器&#xff0c;但它们之间存在显著的区别&#xff0c;主要体现在编译目标、使用场景以及编译生成的二进制文件的可执行性上。而软链接则是Linux文件系统中的一种特殊文件类型&#xff0c;用于创建一个文件的别名。 a…...

常用环境部署(二十二)——MySQL的数据库迁移到另一个机器上

1、导出原数据库的数据 mysqldump -u [用户名] -p[密码] [数据库名] > database_dump.sql 命令示例&#xff1a; mysqldump -u root -p123456 wd > /opt/wd.sql 2、在新机器上创建数据库 mysql -u [用户名] -p -e "CREATE DATABASE [新数据库名]" 命令示…...

网站性能容量的收集与分析怎么做/全国疫情地区查询最新

java - char的默认值是什么&#xff1f;char c \u0000;当我打印c时&#xff0c;它在命令行窗口中显示“a”。那么char类型字段的默认值是什么&#xff1f;有人说\ u0000在unicode中表示无效; 是对的吗&#xff1f;user1298336 asked 2019-06-07T07:58:58Z14个解决方案84 votes…...

成都市温江区建设局网站/seo经理

在讲述证书的使用前&#xff0c;我们先来了解另外一个知识——发布网页。 在前面所说的ClickOnce部署中&#xff0c;如果大家细心的话&#xff0c;应该会发现这么个问题。 如上图&#xff0c;发布成功后&#xff0c;在"输出"窗口中提示无法查看发布网页。 好&#x…...

海东市公司网站建设/今天的国内新闻

选择文件之后自动上传文件&#xff1a; 这里uploadAsync的值为ture(默认)&#xff0c;则会走fileuploaded回调(能获取到previewId&#xff0c;所以我会用异步)&#xff1b;如果为false&#xff0c;则会走filebatchuploadsuccess回调(获取不到previewId) $(document).ready(fu…...

怎么自己制作个网站/seo入门培训

1 点击创建虚拟机 2 选择安装程序光盘映像文件 3 选择配置 4 选择Install CentOs7进行安装操作系统 5 选择中文&#xff08;倒数第二个&#xff09;点击确定 6 等待内容加载完毕 7 软件选择 最小安装 调试工具 系统管理 开发工具 完成 8 选择安装位置 9 KDUMP 选择禁用…...

企业做网站的目的/网络营销项目策划

ecshop的includes下面的lib开头相关函数文件 1.lib_article.php (文章及文章分类相关函数库) function get_cat_articles($cat_id, $page 1, $size 20 ,$requirement) 获得文章分类下的文章列表 function get_article_count($cat_id ,$requirement) 获得指定分类下的文章总…...

前端做任务的网站/中超最新积分榜

1.1 指定运行级别运行级别说明: 0 : 关机 1 : 单用户[召回丢失密码] 2 : 多用户状态没有网络服务 3 : 多用户状态有网络服务 4 : 系统未使用保留给用户 5 : 图形界面 6 : 系统重启常用运行级别是 3 和 5 &#xff0c;要修改默认的运行级别可改文件 /etc/inittab 的 id:5:initde…...