队列学习一

#include <iostream>
#include<cstdio>
using namespace std;
typedef struct LinkNode {//队列链式结构
    int Data;
    struct LinkNode* next;
}LinkNode;
typedef struct {
    LinkNode* front;
    LinkNode* rear;
}LinkQueue;
typedef struct Link {//队列线性结构
    int Data[100];
    int front;
    int rear;
}Link;
bool InitQueue(LinkQueue& Q)//队列初始化
{
    Q.front = Q.rear = new LinkNode;
    if (Q.front == NULL) return false;
    Q.front->next = NULL;
    return true;
}
bool EnQueue(LinkQueue& Q, int& data)//入队操作
{
    LinkNode* s = new LinkNode;
    if (s == NULL) return false;
    s->Data = data;
    s->next = NULL;
    Q.rear->next = s;
    Q.rear = s;
    return true;
}
bool DeQueue(LinkQueue& Q, int& data)//出队操作;
{
    if (Q.front == Q.rear) return false;
    LinkNode* p = Q.front->next;
    data = p->Data;
    Q.front->next = p->next;
    if (Q.rear == p) Q.rear = Q.front;
    delete[] p;
    return true;
}
bool EmptyQueue(LinkQueue Q)
{
    if (Q.front == Q.rear) return true;
    return false;
}
int main()
{
    LinkQueue Q;
    InitQueue(Q);
    int data;
    cin >> data;
    while (data != 000)
    {
        EnQueue(Q, data);
        cin >> data;
    }
    while (!EmptyQueue(Q))
    {
        DeQueue(Q, data);
        cout << data << endl;
    }
    return true;
}

 

上一篇:单链表逆序2.0(重新整理)


下一篇:数据结构之顺性表