#include<iostream>
using namespace std;

struct node
{
	int data;
	node *next, *prior;
};

class queue
{
private:
	node * front, *rear;
public:
	queue(int e);
	~queue(){}
	void enqueue(int e);
	void dequeue();
	void Enqueue(int e);
	void Dequeue();
	void print();
};

queue::queue(int e)
{
	node *s;
	s =rear=front=new node;
	s->data = e;
	rear->next = front;
	rear->prior =front;
	front->next =rear;
	front->prior = rear;
}

void queue::enqueue(int e)
{
	node *s = new node;
	s->data = e;
	s->next = rear->next;
	rear->next = s;
	s->prior = front->prior;
	front->prior = s;
	front = s;
	rear = front->prior;
}

void queue::dequeue ()
{
	if (rear == front)return;
	node *s = new node;
	cout << "pop:" << rear->data << endl;
	s = rear->prior;
	s->next = rear->next;
	front->prior = s;
	delete rear;
	rear = s;
}

void queue::Enqueue(int e)
{
	node *s = new node;
	s->data = e;
	s->prior = front->prior;
	front->prior = s;
	s->next = rear->next;
	rear->next = s;
	rear = s;
	front = rear->next;
}

void queue::Dequeue()
{
	if (rear == front)return;
	node *s = new node;
	cout << "pop:" << front->data << endl;
	s = front->next;
	s->prior = front->prior;
	rear->next = s;
	delete front;
	front = s;
}

void queue::print()
{
	node *p = front;
	do {
		cout << p->data << ' ';
		p = p->next;
	} while (p != front);
	cout << endl;
}

int main(void)
{
	queue A(1);
	A.enqueue(2);
	A.dequeue();
	A.enqueue(3);
	A.Enqueue(4);
	A.enqueue(5);
	A.dequeue();
	A.Dequeue();
	A.Enqueue(6);
	A.enqueue(7);
	A.print();
	system("pause");
	return 0;
}

大写的Dequeue和Enqueue是反向出队入队。

给出I/O测试截图:

数据结构__双向循环队列(链表形式)

相关文章:

  • 2021-07-05
  • 2021-09-28
  • 2022-12-23
  • 2021-11-18
  • 2021-08-11
  • 2021-09-22
  • 2021-08-05
  • 2021-09-30
猜你喜欢
  • 2021-11-12
  • 2022-12-23
  • 2021-09-09
  • 2021-05-08
  • 2021-07-14
  • 2021-10-26
相关资源
相似解决方案