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

浙公网安备 33010602011771号