zoukankan      html  css  js  c++  java
  • 数据结构自己实现——queue

    SeqQueue.h

    #define QueueSize 100
    typedef char DataType;
    
    class SeqQueue
    {
    public:
                    DataType data[QueueSize];
                     int front;
                     int rear;
    
                     void Initial();
                     bool IsEmpty();
                     bool IsFull();
                     void EnQueue(DataType temp);
                    DataType DeQueue();
                    DataType Front();
    };
    
    SeqQueue.cpp
    #include "SeqQueue.h"
    #include <iostream>
    using namespace std;
    
    void SeqQueue::Initial()
    {
                    rear = front  = 0;
    }
    
    bool SeqQueue::IsEmpty()
    {
                     return rear == front;
    }
    
    bool SeqQueue::IsFull()
    {
                     return rear - front == QueueSize - 1;
    }
    
    void SeqQueue::EnQueue(DataType temp)
    {
                     if(IsFull())
                                    cout<< "队??列?D已??满??" <<endl;
                     else
                    {
                                    data[rear] = temp;
                                    rear++;
                    }
    }
    DataType SeqQueue::DeQueue()
    {
                     if(IsEmpty())
                    {
                                    cout<< "队??列?D为a空?" <<endl;
                    }
                     else
                    {
                                    DataType temp;
                                    temp = data[front];
                                    front++;
                                     return temp;
                    }
    }
    DataType SeqQueue::Front()
    {
                     if(IsEmpty())
                    {
                                    cout<< "队??列?D为a空?" <<endl;
                    }
                     else
                    {
                                    DataType temp;
                                    temp = data[front];
                                     return temp;
                    }
    }
    

      

     LinkQueue.h
    typedef char DataType;
    typedef struct node
    {
                    DataType data;
                    node* next;
    }Node;
    class LinkQueue
    {
    public:
                    Node* front;
                    Node* rear;
    
                     void Initial();
                     bool IsEmpty();
                     void EnQueue(DataType temp);
                    DataType DeQueue();
                    DataType Front();
    };
    

      

    LinkQueue.cpp
    #include "LinkQueue.h"
    #include <iostream>
    using namespace std;
    
    void LinkQueue::Initial()
    {
                    front = rear = NULL;
    }
    bool LinkQueue::IsEmpty()
    {
                     return front == NULL;
    }
    
    void LinkQueue::EnQueue(DataType temp)
    {
                    Node* tempnode = (Node*)malloc( sizeof(Node));
                    tempnode->data = temp;
                    tempnode->next = NULL;
    
                     if(IsEmpty())
                    {
                                    front = rear = tempnode;
                    }
                     else
                    {
                                    rear->next = tempnode;
                                    rear = tempnode;
                    }
    }
    
    DataType LinkQueue::DeQueue()
    {
                     if(IsEmpty())
                    {
                                    cout<< "链???队??列?D为a空?" ;
                    }
                     else
                    {
                                    Node * tempnode = (Node*)malloc( sizeof(Node));
                                    tempnode = front;
                                    DataType temp;
                                    temp = tempnode->data;
                                    front = front->next;
                                     if(rear==tempnode)
                                                    rear= NULL;
                                    free(tempnode);
                                     return temp;
                    }
    }
    DataType LinkQueue::Front()
    {
                     if(IsEmpty())
                    {
                                    cout<< "链???队??列?D为a空?" ;
                    }
                     else
                                     return front->data;
    }
    

      

    main.cpp
    #include <iostream>
    #include "SeqQueue.h"
    #include "LinkQueue.h"
    using namespace std;
    
    int main()
    {
                    SeqQueue mySeqQueue;
                    mySeqQueue.Initial();
                    mySeqQueue.EnQueue( 'a');
                    cout<<mySeqQueue.Front();
                    mySeqQueue.EnQueue( 'b');
                    mySeqQueue.EnQueue( 'c');
                    cout<<mySeqQueue.DeQueue();
                    cout<<mySeqQueue.DeQueue();
                    cout<<mySeqQueue.DeQueue();
                    mySeqQueue.DeQueue();
    
                    LinkQueue myLinkQueue;
                    myLinkQueue.Initial();
                    myLinkQueue.EnQueue( 'a');
                    myLinkQueue.EnQueue( 'b');
                    myLinkQueue.EnQueue( 'c');
                    cout<<myLinkQueue.DeQueue();
                    cout<<myLinkQueue.DeQueue();
                    cout<<myLinkQueue.DeQueue();
                    myLinkQueue.DeQueue();
                     return 0;
    } 
    

      

  • 相关阅读:
    nullptr 与 null
    nullptr 与 null
    UNREFERENCED_PARAMETER 的作用
    Kali-Linux无线网络渗透测试-李亚伟-第3章-监听WiFi网络--虚拟机使用无线网卡
    探寻Linux背后的“美丽心灵”——Linux创始人Linus Torvalds访谈录
    Angular2(Beta)入门
    angular2 will be kiiled by react in the future?
    《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)前言
    Angular vs React – so which do I chose?
    2015-2016前端知识体系
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3435826.html
Copyright © 2011-2022 走看看