数据结构之队列的基本操作入队出队初始化删除-c++代码实现

来源:互联网 发布:荣格全集 淘宝 编辑:程序博客网 时间:2024/04/19 00:24

C++的头文件已经包含了队列如下所示,但我们也要了解一下他们的实现原理,而且stl提供的容器都是“通用版本”,在解决某些具体问题时,stl不一定是最合适最高效的,有时候还是要自己实现特化版本……,所以自己编写一次代码

直接调用头文件方法

代码如下:

#include <iostream>#include<queue>//头文件using namespace std;int main(){    queue<int> q;    for(int i=0;i<10;++i)        q.push(i+1);//入队1到10    int queue_head=q.front();//获取队首元素    int queue_number=q.size();//获取队列元素个数    cout<<"队首元素为:"<<queue_head<<endl;    cout<<"队列元素总个数为:"<<queue_number<<endl;    cout<<"队列元素依次出队"<<endl;    while(!q.empty())    {        cout<<q.front()<<" ";//cout<<q.pop()<<" "出错        q.pop();    }    return 0;}

运行结果



下面是直接直接

编写的队列的相关操作

伪代码(请忽略红色线)

c++代码

#include <iostream>#define queueSize 100//定义队列大小为100using namespace std;class seqQueue//顺序队列{private:    char queue[queueSize];    int head;    int tail;public:    void initQueue(seqQueue &sQ);    void clearQueue(seqQueue &sQ);    int queueEmpty(seqQueue &sQ);    int enQueue(seqQueue &sQ,char x);    int deQueue(seqQueue &sQ,char *x);    friend int main();//将主函数声明为类的友元,这样主函数才能访问类的私有成员};/*初始化队列*/void seqQueue::initQueue(seqQueue &sQ){    sQ.head=sQ.tail=0;}/*删除队列*/void seqQueue::clearQueue(seqQueue &sQ){    sQ.head=sQ.tail=0;}/*如果队列为空*/int seqQueue::queueEmpty(seqQueue &sQ){    if(sQ.tail==sQ.head)        return 1;    else        return 0;}/*入队*/int seqQueue::enQueue(seqQueue &sQ,char x){    if(sQ.tail==queueSize)//从队尾进入        return 0;    else    {        sQ.queue[sQ.tail++]=x;        return 1;    }}/*出队*/int seqQueue::deQueue(seqQueue &sQ,char *x){    if(sQ.tail==sQ.head)        return 0;    else    {        *x=sQ.queue[sQ.head++];        return 1;    }}int main(){    seqQueue sq;    char x;    char str[]="abcd";//定义一个数组    sq.initQueue(sq);//初始化    for(int i=0;i<sizeof(str)/sizeof(str[0]);++i)        sq.enQueue(sq,str[i]);//将"abcd"入队    cout<<"输入到队列中的元素依次为:";    for(int i=0;i<sizeof(str)/sizeof(str[0]);++i)        cout<<str[i]<<" ";//首先输出我们输入到队列中的元素    sq.deQueue(sq,&x);//出队队首元素    cout<<endl<<"出队的元素为:"<<x;    cout<<endl<<"剩余元素依次出队:";    if(!sq.queueEmpty(sq))    {        for(int i=sq.head;i<sq.tail;++i)        cout<<sq.queue[i]<<" ";    }    return 0;}

运行结果








阅读全文
0 0
原创粉丝点击