首页 / C++ / 链队列实例C++代码实现
链队列实例C++代码实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了链队列实例C++代码实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2621字,纯文字阅读大概需要4分钟。
内容图文
![链队列实例C++代码实现](/upload/InfoBanner/zyjiaocheng/607/e8f9aed94b9547be830d1e063a9cc482.jpg)
list_queue.h
#pragma once
#define Queue_Datatype int
#define Init_QueueData 99
#include<iostream>
class Queue_Node {
public:
Queue_Node() {
data = Init_QueueData;
next = NULL;
}
Queue_Node(Queue_Datatype x) : data(x), next(NULL) {
}
Queue_Datatype data;
Queue_Node *next;
};
class MyQueue
{
public:
MyQueue();
MyQueue(int size);
~MyQueue();
void Init_Queue(); // 初始化队列
void Destory_Queue(); // 摧毁队列
void Clear_Queue(); // 清空队列
bool Queue_Empty(); // 是否为空队列
int Queue_Size(); // 队列长度
int Queue_Head(); // 获取队头数据
bool Queue_Push(Queue_Datatype x); // 入队
bool Queue_Pop(); // 出队
void Print_Queue(); // 遍历队列
private:
Queue_Node* front; // 队头
Queue_Node* rear; // 队尾
};
list_queue.cpp
#include "list_queue.h"
#include <iostream>
MyQueue::MyQueue()
{
Init_Queue();
}
MyQueue::MyQueue(int size)
{
Init_Queue();
for (int i = 0; i < size; i++) {
Queue_Datatype temp;
std::cin >> temp;
Queue_Push(temp);
}
}
MyQueue::~MyQueue()
{
Clear_Queue();
Destory_Queue();
}
void MyQueue::Init_Queue()
{
Queue_Node *temp = new(std::nothrow) Queue_Node;
if (!temp)
std::exit(1);
front = temp;
rear = temp;
}
void MyQueue::Destory_Queue()
{
delete(front);
}
void MyQueue::Clear_Queue()
{
if (Queue_Empty())
return;
Queue_Node *cur = front->next;
Queue_Node *next = cur->next;
while (cur != rear)
{
delete(cur);
cur = next;
next = next->next;
}
delete(rear);
rear = front;
}
bool MyQueue::Queue_Empty()
{
return (front == rear) ? true : false;
}
int MyQueue::Queue_Size()
{
int num = 0;
Queue_Node *temp = front;
while (temp!=rear)
{
num++;
temp = temp->next;
}
return num;
}
int MyQueue::Queue_Head()
{
if (Queue_Empty())
std::cout << "队列为空" << std::endl;
return false;
Queue_Datatype value = front->next->data;
return value;
}
bool MyQueue::Queue_Push(Queue_Datatype x)
{
Queue_Node* temp = new(std::nothrow) Queue_Node(x);
if (!temp)
std::exit(1);
rear->next = temp;
rear = temp;
return true;
}
bool MyQueue::Queue_Pop()
{
if (Queue_Empty())
std::cout << "队列为空" << std::endl;
return false;
if (Queue_Size() == 1) {
delete(front->next);
front->next = NULL;
rear = front;
}
else {
Queue_Node* node = front->next;
front->next = node->next;
delete(node);
}
return true;
}
void MyQueue::Print_Queue()
{
Queue_Node* cur = front->next;
while (cur != NULL)
{
std::cout << cur->data << std::endl;
cur = cur->next;
}
}
test.cpp
#include "list_queue.h"
#include <iostream>
int main()
{
std::cout << "请输入元素: " << std::endl;
MyQueue a(3);
std::cout << "队列长度: " << a.Queue_Size() << std::endl;
a.Print_Queue();
a.Queue_Push(10);
std::cout << "插入元素后的队列遍历: " << std::endl;
a.Print_Queue();
std::cout << "队头元素: " << a.Queue_Head() << std::endl;
system("pause");
return 0;
}
内容总结
以上是互联网集市为您收集整理的链队列实例C++代码实现全部内容,希望文章能够帮你解决链队列实例C++代码实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。