码迷,mamicode.com
首页 > 其他好文 > 详细

队列的基本操作

时间:2015-10-24 14:29:25      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

    

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

typedef struct Node
{
    int data;
    struct Node * next;
}Node,*PNode;

typedef struct Queue
{
    PNode front;
    PNode rear;
}Queue,*PQueue;

//函数声明
void InitQueue(PQueue Q);
void EnQueue(PQueue Q);
void PrintQueue(PQueue Q);
void DeQueue(PQueue Q);
void showlist();
void selection(PQueue);
bool empty(PQueue);

int main()
{
    Queue q;
    InitQueue(&q);
    selection(&q);
    system("pause");
    return 0;
}

void showlist()
{
    system("color 3e");
    cout<<"**********************************"<<endl;;
    cout<<"************1.入队列**************"<<endl;
    cout<<"************2.出队列**************"<<endl;
    cout<<"************3.打印队列元素********"<<endl;
    cout<<"************4.退出****************"<<endl;
    cout<<"**********************************"<<endl;
}

void selection(PQueue q)
{
    int opt;
    showlist();

    while(1)
    {
        cout<<"请选择你的操作:";
        cin>>opt;
        switch(opt)
        {
            case 1:
                EnQueue(q);
                system("color 7e");
                break;
            case 2:    
                DeQueue(q);
                system("color 6e");
                break;
            case 3:    
                PrintQueue(q);
                system("color 5e");
                break;
            case 4:
            exit(-1);
        }
        
    }
}

//初始化
void InitQueue(PQueue Q)
{
    Q->front=(PNode)malloc(sizeof(Node));
    Q->rear=Q->front;
    Q->front->next=NULL;
    cout<<"初始化成功"<<endl;
}

//入队列
void EnQueue(PQueue Q)
{
    int n;
    int x;
    cout<<"请输入要入队列的个数:";
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cout<<"请输入第"<<i<<"个元素的值:";
        cin>>x;

        PNode p;
        p=(PNode)malloc(sizeof(Node));//申请节点

        p->data=x;
        p->next=NULL;
        Q->rear->next=p;
        Q->rear=p;
    }
}

//打印队列元素
void PrintQueue(PQueue Q)
{
    PNode p;
    p=Q->front->next;
    cout<<"遍历队列的结果是:"<<endl;
    if(empty(Q))
        cout<<"没有元素要打印!!"<<endl;
    else
    {
        while(p->next!=NULL)
        {
            cout<<p->data<<" ";
            p=p->next;
        }
    cout<<p->data<<endl;//打印最后一个元素
    }
    
}

//出队列
void DeQueue(PQueue Q)
{
    PNode p;
    if(Q->front == Q->rear)
        cout<<"对不起,没有元素,不能出队列!!!"<<endl;
    else
    {
        p=Q->front->next;    //指向要出队的元素
        Q->front->next=p->next;
        if(p->next=NULL)
            Q->rear=Q->front;
        cout<<"出队的元素是"<<p->data<<endl;
        free(p);
    }
}

bool empty(PQueue Q)
{
    if(Q->front == Q->rear)
        return true;
    else
        return false;
}

运行结果:

技术分享

队列的基本操作

标签:

原文地址:http://my.oschina.net/lvguidong/blog/521528

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!