1 #pragma once
2
3 typedef int Type;
4
5 template <class Type> struct LQNode {
6 Type data;
7 LQNode<Type> *next;
8 };
9
10 template <class Type> class LQueue {
11 private:
12 LQNode<Type> *front;
13 LQNode<Type> *rear;
14
15 public:
16 bool IsEmpty();
17 bool EnLQueue(Type d);
18 bool DeLQueue(Type *d);
19 };
1 #include <stdio.h>
2 #include "LinkQueue.h"
3
4 template <class Type> bool LQueue<Type> :: IsEmpty()
5 {
6 return NULL == front;
7 }
8
9 template <class Type> bool LQueue<Type> :: EnLQueue(Type d)
10 {
11 LQNode<Type> *node = new LQNode<Type>;
12 if (NULL == node)
13 return false;
14
15 node->data = d;
16
17 if (front == NULL)
18 front = node;
19 else
20 rear->next = node;
21
22 rear = node;
23
24 return true;
25 }
26
27 template <class Type> bool LQueue<Type> :: DeLQueue(Type *d)
28 {
29 LQNode<Type> *node;
30
31 if (IsEmpty())
32 return false;
33
34 node = front;
35 front = front->next;
36 *d = node->data;
37
38 delete node;
39
40 return true;
41 }
1 #include <iostream>
2 #include "LinkQueue.h"
3 #include "LinkQueue.cpp"
4
5 using namespace std;
6
7 int main(int argc, char **argv)
8 {
9 int i = 0;
10 Type d;
11 Type data[] = {1, 2, 3, 4,5, 6, 7, 8, 9, 0};
12 LQueue<Type> *q = new LQueue<Type>;
13
14 while (i < 10)
15 q->EnLQueue(data[i++]);
16
17 while (q->DeLQueue(&d))
18 cout << d << " ";
19
20 cout << endl;
21
22 return 0;
23 }