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