數據結構-隊列_習題

《實用數據結構》 第4章 6.1題
ios

//算法設計題.要求:設一個循環隊列Queue,只有頭指針front,不設尾指針,另設一個含有元素個數的記錄器count,
//試寫出相應的入隊和出隊的算法

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

#define MAXLEN 10
#define Status int
#define datatype int 
#define OK 1
#define Y 1
#define N 0

typedef struct{
        datatype s[MAXLEN];
        int front;
        int count;
}SeqQueue;

//初始化
Status InitSeqQueue(SeqQueue &sq) 
{ 
        sq.front=-1;    //隊首指針指向第一個元素的前一個位置
        sq.count=0;     //count置爲0
        return OK;
}
//隊滿
Status IsFull(SeqQueue &sq)
{
        if(sq.count==MAXLEN) return Y;  //若隊滿,返回1
        else return N;                  //不然返回0
}
//隊空
Status IsEmpty(SeqQueue &sq)
{
        if(sq.count==0) return Y;               //若隊空,返回0
        else return N;
}
//入隊
Status InQueue(SeqQueue &sq,datatype x)
{
        if(IsFull(sq)) return 0;        //隊滿
        srand(time(NULL));
        int a=rand()%10;

        sq.s[sq.count]=x;
        sq.count++;
        return OK;
}
//出隊
Status OutQueue(SeqQueue &sq,datatype &x)
{
        if(IsEmpty(sq)) return 0;       //隊空

        sq.front++;
        x=sq.s[sq.front];
        sq.count--;                     //隊列元素減小1個
        return 1;
}
//顯示隊列元素
Status ShowQueue(SeqQueue sq)
{
        if(IsEmpty(sq)) return 0;       //若隊空,返回0
        while(sq.count!=0)
        {
                cout<<sq.s[sq.front+1]<<" ";
                sq.front++;
                sq.count--;
        }
        cout<<endl;

}

//讀取隊首元素
Status ReadQueue(SeqQueue sq,datatype &x)
{
        if(IsEmpty(sq)) return 0;       //若隊空,返回0
        x=sq.s[sq.front+1];
        return 1;
}

int main()
{
        SeqQueue SQ;
        InitSeqQueue(SQ);

        cout<<"入棧"<<endl;
        InQueue(SQ,1);
        InQueue(SQ,2);
        InQueue(SQ,3);
        InQueue(SQ,4);
        InQueue(SQ,5);

        cout<<"顯示隊列元素:"<<endl;
        ShowQueue(SQ);

        cout<<"出隊:"<<endl;
        datatype temp;
        OutQueue(SQ,temp);
        cout<<"顯示隊列元素:"<<endl;
        ShowQueue(SQ);

        cout<<"顯示隊首元素:"<<endl;
        ReadQueue(SQ,temp);
        cout<<temp<<endl;

        return OK;
}

[dell@localhost queue]$ ./app 
入棧
顯示隊列元素:
1 2 3 4 5 
出隊:
顯示隊列元素:
2 3 4 5 
顯示隊首元素:
2
[dell@localhost queue]$
相關文章
相關標籤/搜索