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;
    } 
    

      

  • 相关阅读:
    后台执行linux命令
    日志
    配置文件
    后台
    后台代码注释
    递归建立文件夹
    图片合成
    java.awt.Font
    java-日期取特定值
    linux乱码
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3435826.html
Copyright © 2011-2022 走看看