#include <iostream>
using namespace std;

//链式存储结构的队列实际上就是带有头尾结点的 单链表
struct Node  //结点结构体
{
    int data;
    Node *next;
};

typedef struct //链表队列
{
    Node *front;
    Node *rear;
}Cirqueue;

void init(Cirqueue &q) //初始化
{
    q.front = q.rear = new Node;
    q.front ->next = NULL;
}

bool isEmpty(Cirqueue &q)  //判定队空
{
    return q.front == q.rear;
}

void creatQueue(Cirqueue &q) //创建一个单链表 画一个逻辑图理清逻辑
{
    q.front = new Node;
    Node * head = q.front;
    int data;
    while(cin>>data && data)
    {
        Node *p = new Node;
        p ->data = data;
        p ->next = head ->next;
        head->next = p;
        head = head->next;
    }
    head->next = NULL;
    q.rear = head;
}

void enqueue(Cirqueue &q,int x) //入队
{
    Node *p = new Node;
    p ->data = x;
    p ->next = NULL;
    q.rear ->next = p;
    q.rear = p;
}

bool dequeue(Cirqueue &q,int &x) //出队
{
    if(q.front == q.rear)
        return false;
    x = q.front->next->data;
    Node *p = q.front ->next;
    q.front ->next = p->next;
    if(q.rear == p)
        q.rear = q.front;
    free(p);
    return true;
}

void traveralQueue(Cirqueue &q)
{
    Node *p = q.front->next;
    while(p)
    {
        cout<<p->data<<" ";
        p = p->next;
    }
}

int main()
{
    Cirqueue q;
    creatQueue(q);
    traveralQueue(q);
    return 0;
}

 

 posted on 2014-07-03 23:51  Clivia_zhou  阅读(352)  评论(0编辑  收藏  举报