栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【栈和队列】总结篇—栈和队列的常见使用以及自行实现栈和循环队列

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【栈和队列】总结篇—栈和队列的常见使用以及自行实现栈和循环队列

本篇总结数据结构中有关栈和队列的题目中所用到的栈和队列的知识。

主要包括C++中栈和队列的一些常见的函数和使用方法,栈和队列作为参数传递时的方法,以及自行实现栈和队列的方法。

1. 栈的创建和常用方法

(1)栈的创建

包括头文件,以及作为参数传递时接受方为stackstk。

#include 
#include
using namespace std;
void Init_Stack(stackstk)
{
    while(!stk.empty())
        stk.pop();
}
int main()
{
    stackstk;
    //对栈进行初始化
    Init_Stack(stk);
    return 0;
}

(2)栈的常用方法

stackstk;//创建一个栈
stk.push('a');//向栈内压入一个成员
stk.pop();//从栈顶弹出一个成员
falg=stk.empty();//如果栈为空返回true
Top=stk.top();//返回栈顶元素,但不删除
num=stk.size();//返回栈内元素个数
2. 队列的创建和常用方法

(1)队列的创建

#include 
#include
using namespace std;
void Init_Queue(queueq)
{
    while(!q.empty())
        q.pop();
}
int main()
{
    queueq;//创建一个队列
    Init_Queue(q);
    return 0;
}

(2)队列的常用方法

queueq;//创建一个队列
q.push('a');//向队尾压入一个成员
q.pop();//从队头出一个成员
falg=q.empty();//如果队列为空返回true
frot=q.front();//返回队首元素
tail=q.back();//返回队尾元素
num=q.size();//返回队列内元素个数
3. 自行实现栈

实现栈比较简单,参考下面实现队列即可。列出一些不同点:

(1)栈只有栈顶成员top,初值应该赋为-1;

(2)入栈时先top++,然后压入元素;

4. 自行实现队列

需要注意两个点:

(1)注意队首和队尾的初值,front=0,rear=-1;

(2)入队列的时候先改变队尾元素指针,再将值入队列;

(3)push和pop时都是先+1再%Maxlen;

(4)求队尾元素上一个时,(rear-1+Maxlen)%Maxlen;

#include 
#include
#include
using namespace std;

typedef struct{
    int *data;
    int MaxLen;//队列最大长度
    int rear;//队尾
    int frot;//队头
    int length;//当前队列长度
}Queue;

void Create_Queue(Queue *que,int n)
{
    que->data=(int *)malloc(sizeof(int)*n);
    que->MaxLen=n;
    que->length=0;
    que->frot=0;//注意,队首初值为0,队尾初值为-1
    que->rear=-1;
}

void Qpush(Queue *que,int tmp)
{
    que->rear=(que->rear+1)%que->MaxLen;//先改变队尾节点,在赋值元素
    que->data[que->rear]=tmp;
    que->length++;
}

void Qpop(Queue *que)
{
    que->frot=(que->frot+1)%que->MaxLen;
    que->length--;
}

int Qfront(Queue *que)
{
    return que->data[que->frot];
}

int Qback(Queue *que)
{
    return que->data[que->rear];
}

int Qempty(Queue *que)
{
    if(que->length==0)
        return 1;
    else
        return 0;
}

int Qsize(Queue *que)
{
    return que->length;
}
int main()
{
    int n;
    cin>>n;
    Queue *que;
    que=(Queue *)malloc(sizeof(Queue));
    Create_Queue(que,n);
    free(que);
    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291464.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号