队列简要实现,是queue,不是dequeue

#ifndef MYQUEUE_H
#define MYQUEUE_H
struct Node
{
	int data;
	Node *next;

};

class LUqueue
{
public:
	LUqueue();
	~LUqueue();
	void Push(int data);
	int  Top();
	void Pop();
private:
	void Insert(Node * curr, int data);
	void Erase(Node *curr);
	Node *head;
	Node *tail;
};
#endif

头文件Myqueue.h


定义Myqueue.cpp

#include "Myqueue.h"

LUqueue::LUqueue()
{
	tail=(head = new Node);
	head->next = nullptr;
}

LUqueue::~LUqueue()
{
	delete head;
	head = nullptr;
	tail = nullptr;
}

void LUqueue::Insert(Node * curr, int dat)
{
	Node *p = new Node;
	p->data = dat;
	curr->next = p;
	p->next = nullptr;
	tail = p;
}

void LUqueue::Erase(Node *curr)
{
	Node *p = new Node;
	p = curr->next->next;
	delete curr->next;
	curr->next = p;
}

void LUqueue::Push(int data)
{
	Insert(tail,data);
}

void LUqueue::Pop()
{
	Erase(head);
}

int LUqueue::Top()
{
	return head->next->data;
}

测试

#include"Myqueue.h"
#include <iostream>

int main()
{
	LUqueue que;
	que.Push(5);
	que.Push(7);
	que.Push(8);
	que.Push(9);
	std::cout << que.Top() << std::endl;
	std::cout << que.Top() << std::endl;
	que.Pop();
	std::cout << que.Top() << std::endl;
	que.Pop();
	std::cout << que.Top() << std::endl;
	que.Pop();
	std::cout << que.Top() << std::endl;
	que.Pop();
	//std::cout << que.Top() << std::endl;
	system("pause");
	return 0;
}


猜你喜欢

转载自blog.csdn.net/sinat_14884161/article/details/52016245