6.22栈and队列

栈:

概念:

一个装数据的桶,只能从一段进一段出

栈支持哪些操作:

初始化一个栈:init

加入新元素:push

删除元素:pop

获取栈顶元素:getTop

获取一共有多少个元素:getSize

栈的方法指针版:

typedef long long Int;

constexpr Int MAX_SIZE=1000;

//定义一个名为Stack的结构体

struct Stack{

//定义一个名为elem的数组,大小为MAX_SIZE

int elem[MAX_SIZE];

//定义一个名为top的指针,初始化指向elem数组的首地址

int* top = elem;

};

//初始化栈

void init(Stack &s){

*s.top++=x;//尾指针和头指针重合

}

//添加元素

void front(Stack &s, int x){

//先将x放入栈顶,然后top向前一个Int

*s.top++=x;

}

//删除栈顶元素

Int pop(Stack &s){

//先将栈顶元素排出栈然后top后退一格

return *--s.top;

}

//获取栈顶元素

Int getTop(Stack &s){

//返回top(栈顶前面一个int的指针)的前面一个int

return *(s.top-1);

}

//获取栈的大小

Int getSize(Stack &s){

//左闭右开:求元素数量尾指针-头指针

return s.top-s.elem;

}

栈的方法下标版:

typedef long long Int;

// 定义一个常量,MAX_SIZE表示栈的最大容量

constexpr Int MAX_SIZE = 1000;

// 定义一个名为 Stack 的结构体,包含一个整数数组 elem 和一个整数变量 top 用于表示栈顶元素的位置

struct Stack {

// 数组elem存储栈中元素,初始化top为0,表示栈为空

Int elem[MAX_SIZE];

// top为栈顶索引,初始值为0

Int top = 0;

};

// 函数init用于初始化栈,将栈顶元素位置top设置为0

void init(Stack &s) {

// 将栈顶top置为0,表示栈为空

s.top = 0;

}

// 函数pop用于从栈顶删除一个元素并返回该元素的值,top减1

Int pop(Stack &s) {

// 返回栈顶元素elem[top],然后将top减1,表示元素已排出栈

return s.elem[--s.top];

}

// 函数getTop用于获取但不删除栈顶元素的值,直接返回栈顶元素elem[top-1]

Int getTop(Stack &s) {

// 返回栈顶元素的值,不改变栈的状态

return s.elem[s.top - 1];

}

// 函数getSize用于返回栈中元素的数量,但计算方法错误,应为top - s.elem,已修正后的正确版本如下:

// Int getSize(Stack &s) {

// return s.top - s.elem; // 这里应该是返回top - elem,即列表尾减列表头

//}

// 函数push用于将元素x放入栈顶,将新元素放在栈顶位置,并更新top

void push(Stack &s, Int x) {

// 将新元素x存入elem数组的下一位(top+1),然后更新top

s.elem[++s.top] = x;

}

队列:

队列支持哪些操作:

初始化:init

在开头删除一个元素:popFront

在末尾加入一个元素:pushBack

获取开头的元素:getFront

获取末尾的元素:getBack

获取一共有几个元素:getSize

概念:

只能从头上出,从尾上删。

各种方法:

// 定义一个长整型别名,方便后续使用

typedef long long Int;

// 用于限制队列的最大元素数量

constexpr Int MAX_SIZE = 1000;

// 定义一个Queue结构体,包含元素数组elem、头指针head和尾指针tail

struct Queue {

Int elem[MAX_SIZE]; // 存储队列元素的数组

Int* head; // 队列头部指针,初始指向数组第一个元素

Int* tail; // 队列尾部指针,初始指向数组最后一个位置(数组末尾)

};

// 函数pop():将给定值x插入队列尾部,并更新尾指针

// 参数:q(引用)表示操作的队列,x(Int类型)是要入队的值

void pop(Queue& q, Int x) {

// 将新元素x放置在尾部,然后尾部指针后移一位

*q.tail++ = x;

}

// 函数getHead():获取队列头部的元素值,但不移动头部指针

Int getHead(Queue& q) {

// 返回当前头部元素的值,不改变队列状态

return *q.head;

}

// 函数getTail():获取队列尾部的元素值,但不移动尾部指针

Int getTail(Queue& q) {

// 返回当前尾部元素的值,尾部指针减一以排出删除的元素

return *(q.tail - 1);

}

// 函数getSize():计算队列中的元素数量,通过尾部指针和头部指针之差得到

Int getSize(Queue& q) {

// 返回队列中已存储的元素个数头减尾

return q.tail - q.head;

}

  • 24
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WinRAR 6.22 是一款常用的压缩文件工具。它具有简便易用的界面和多种功能,可以帮助用户对文件和文件夹进行快速、有效的压缩和解压缩操作。 WinRAR 6.22 支持的压缩文件格式多种多样,包括RAR、ZIP、CAB、ARJ、LZH、ACE、TAR等等。用户可以根据自己的需求选择适合的压缩格式,以提高存储效率和文件传输速度。 该软件还具备强大的压缩算法,可以实现高度的文件压缩率,节省存储空间。用户可以通过设置压缩级别、选择压缩方式等操作,根据需要平衡压缩比和压缩速度。 除了压缩文件,WinRAR 6.22 还具备解压缩功能。用户可以将压缩文件解压缩到指定位置,快速获取原始文件。同时,软件还支持密码保护功能,用户可以设置密码来保护压缩文件中的内容,加强文件的安全性。 此外,WinRAR 6.22 还提供了文件分卷压缩功能,用户可以将大文件分成多个部分进行压缩,方便存储和传输。解压缩时,只需解压一个分卷文件即可,便于操作和管理。 总之,WinRAR 6.22 是一款功能全面、操作简便的压缩文件工具。无论是压缩文件还是解压缩文件,它都能提供高效、安全的操作体验,满足用户的各种需求。无论是个人用户还是企业用户,都可以从中受益。 ### 回答2: WinRAR 6.22是一个流行的压缩工具。它可以帮助用户有效地压缩和解压缩文件,节省存储空间并方便文件传输。 WinRAR 6.22具有许多强大的功能。首先,它支持各种文件格式的压缩和解压缩,包括RAR、ZIP、ISO、7Z等。这意味着无论用户需要压缩哪种类型的文件,WinRAR都可以帮助他们完成任务。 其次,WinRAR 6.22具有高度的压缩率,可以显著减小文件大小,从而节省硬盘空间和带宽。用户可以使用不同的压缩级别来平衡压缩率和压缩时间。同时,WinRAR还支持多卷压缩,可以将大文件分割成多个小文件进行传输或存储。 此外,WinRAR 6.22还提供了强大的加密功能,可以保护用户的文件安全。用户可以为压缩文件设置密码,以确保只有授权的人可以访问其中的内容。 还有其他一些实用的功能,例如创建自解压缩文件、修复受损的压缩文件、预览压缩文件的内容等等。WinRAR还提供了直观的界面和易于使用的操作,使用户能够轻松地完成各种压缩和解压缩任务。 总之,WinRAR 6.22是一个功能强大且易于使用的压缩工具,适用于各种文件的压缩和解压缩需求。它提供了高度的压缩率、可靠的文件加密以及其他实用的功能,使用户能够方便地管理和传输文件。无论是个人用户还是商业用户,都会发现WinRAR 6.22是一个不可或缺的工具。 ### 回答3: WinRAR 6.22 是一款非常流行的压缩文件管理软件。它的主要功能是能够将多个文件或文件夹压缩成一个压缩文件,以减小文件的大小并方便传输。同时,它还可以解压缩各种类型的压缩文件。 WinRAR 6.22 具有以下一些主要特点和功能。首先,它支持创建和解压缩众多的压缩文件格式,包括RAR、ZIP、7z等等。无论是哪种格式,我们都可以在WinRAR中方便地进行操作。 其次,WinRAR 6.22 允许用户设置密码来保护压缩文件中的数据。这一功能对于包含私密信息的文件非常重要,可以确保文件只能被授权的人员访问。 另外,WinRAR 6.22 还支持分卷压缩,即将一个大文件分割成多个较小的压缩文件。这样做有利于存储和传输,特别是当需要将大文件拆分在多个存储设备或介质上时。 此外,WinRAR 6.22 还具备可靠的压缩和解压缩算法,可以保证数据的完整性和准确性。它能够压缩文件并还原其原始状态,同时最大限度地减小文件大小。 除此之外,WinRAR 6.22 还提供了一个直观友好的用户界面,使得用户可以轻松地操作和管理压缩文件。它还具备快速的压缩和解压缩速度,能够高效地处理大型文件。 总之,WinRAR 6.22 是一款高效、稳定和功能丰富的压缩文件管理软件。它提供了多种压缩和解压缩选项,支持众多文件格式,且操作简单便捷。无论从个人使用还是商业用途,WinRAR 都是一个不错的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值