C++队列-链式存储

LinkQueue.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#pragma once
#include<iostream>
using namespace std;

struct Node
{
int data;
Node* next;
};

class LinkQueue
{
private:
Node* front,* rear;
public :
LinkQueue();
LinkQueue(int array[],int n);
bool QueueEmpty(); // 判断是否为空,为空返回true
void EnQueue(int e);// 入队操作
bool DeQueue(int &e);// 出队操作

void ShowAll();

};

LinkQueue.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "LinkQueue.h"

// 队尾入,队头出

LinkQueue::LinkQueue()
{
front = rear = new Node();
front->next = NULL;
}

LinkQueue::LinkQueue(int array[], int n)
{
front = rear = new Node();
front->next = NULL;

for (int i = 0; i < n; i++)
{
EnQueue(array[i]);
}
}
bool LinkQueue::QueueEmpty()
{
return front->next == NULL;
}

// 入队
void LinkQueue::EnQueue(int e)
{
Node* p = new Node();
p->data = e;
p->next = NULL;

rear->next = p;
rear = p;
}


// 出队,通过e返回数据
bool LinkQueue::DeQueue(int &e)
{
if (QueueEmpty())
return false; // 队列为空

Node* p = front->next;
e = p->data;// 返回的数据

front->next = p->next;
delete p;

return true;
}

void LinkQueue::ShowAll()
{
Node* p = front->next;
while (p!=NULL)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}

main.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<iostream>
using namespace std;

#include "LinkQueue.h"

int main()
{
int n = 10;
int array[] = { 1,2,3,4,5,6,7,8,9,10 };

LinkQueue queue(array, n);

queue.ShowAll();

// 入队 100
queue.EnQueue(100);
queue.ShowAll();
int e;
// 出队
queue.DeQueue(e);
queue.ShowAll();


return 0;
}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!