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

      

  • 相关阅读:
    java基本数据类型及运算的注意事项
    B-Tree 和 B+Tree 结构及应用,InnoDB 引擎, MyISAM 引擎
    软件工程与软件开发模型、软件开发方法
    2020年3月份Unity3D游戏源码合集-免费下载
    独立游戏开发必备!8个效果不错的Unity3D 免费模型资源包
    2019年4月份整理的Unity3D 20个实用插件-免费下载
    2019年4月份整理的Unity3D游戏完整源码
    2019年3月整理的2D美术资源合集
    画面效果都不错!20个精品Unity3D着色器插件
    Unity3D中UnityPlayerActivity与UnityPlayerNativeActivity有什么区别
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3435826.html
Copyright © 2011-2022 走看看