1: //queue.cpp
2:
3: #include "queue.h"
4:
5: Queue::Queue()
6: {
7: front = new Node;
8: rear = new Node;
9: front->next = NULL;
10: rear = front;
11: length = 0;
12: }
13:
14: Queue::~Queue()
15: {
16: Node * pTemp;
17: while(front->next != NULL)
18: {
19: pTemp = front;
20: front = front->next;
21: delete pTemp;
22: }
23: delete rear;
24: }
25:
26: void Queue::InitQueue()
27: {
28: rear = front;
29: length = 0;
30: }
31:
32: void Queue::ClearQueue()
33: {
34: Node * pTemp;
35: while(front->next != NULL)
36: {
37: pTemp = front->next;
38: front = pTemp->next;
39: delete pTemp;
40: }
41: rear = front;
42: length = 0;
43: }
44:
45: bool Queue::IsEmpty()
46: {
47: return (length == 0);
48: }
49:
50: void Queue::EnQueue(int item)
51: {
52: Node * pTemp = new Node;
53: pTemp->data = item;
54: pTemp->next = NULL;
55: rear->next = pTemp;
56: rear = pTemp;
57: length += 1;
58: }
59:
60: void Queue::DeQueue()
61: {
62: if(front->next != rear)
63: {
64: Node * pTemp = front->next;
65: front->next = front->next->next;
66: delete pTemp;
67: length -= 1;
68: }
69: }
70:
71: int Queue::GetLength()
72: {
73: return length;
74: }
75:
76: void Queue::PrintQueue()
77: {
78: Node * pTemp = front->next;
79: while(front->next != rear)
80: {
81: cout<<front->next->data<<endl;
82: front->next = front->next->next;
83: }
84: front->next = pTemp;
85: cout<<rear->data<<endl;
86: }
1: //queue.h
2:
3: #ifndef QUEUE_H_H
4: #define QUEUE_H_H
5:
6: #include <iostream>
7: using namespace std;
8:
9: struct Node
10: {
11: int data;
12: Node * next;
13: };
14:
15: class Queue
16: {
17: Node * front;
18: Node * rear;
19: int length;
20: public:
21: Queue();
22: ~Queue();
23: void InitQueue();
24: void ClearQueue();
25: bool IsEmpty();
26: void EnQueue(int item);
27: void DeQueue();
28: int GetLength();
29: void PrintQueue();
30: };
31:
32: #endif
1: //test.cpp
2:
3: #include "queue.h"
4: #include <iostream>
5:
6: int main(int argc, char * argv[])
7: {
8: Queue * queue = new Queue;
9: queue->InitQueue();
10: queue->EnQueue(1);
11: queue->EnQueue(2);
12: queue->EnQueue(3);
13: queue->EnQueue(4);
14: queue->EnQueue(5);
15: queue->PrintQueue();
16: if(queue->IsEmpty())
17: {
18: cout<<"empty."<<endl;
19: }
20: else
21: {
22: cout<<"not empty."<<endl;
23: }
24: cout<<"length is "<<queue->GetLength()<<endl;
25: queue->DeQueue();
26: queue->PrintQueue();
27: queue->DeQueue();
28: queue->PrintQueue();
29:
30: return 0;
31: }