标签:
#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