队列——链表实现

#include <iostream>
#include <cstdio>
#include <cstdlib>

using namespace std;

using ElemType = int;

// 队列结点 
class Node {
public:
	ElemType data;
	Node *next;
};

class Queue {
public:
	Node *front;
	Node *rear;
};

void initQueue(Queue &queue)
{
	queue.front = (Node*)malloc(sizeof(Node));	// 起初都指向头结点 
	queue.rear = queue.front;
}

// 入队列,只能从尾部入 
void addNode(Queue &queue, int val)
{
	Node *q = (Node*)malloc(sizeof(Node));
	q->data = val;
	queue.rear->next = q;
	queue.rear = q;
}

// 出队列,只能从头部出
void delNode(Queue &queue)
{
	if (queue.front == queue.rear) {
		cout << "queue is empty...\n";
		return;
	}
	Node *p = queue.front->next;
	cout << "此时的队首元素是:" << p->data << endl; 
	if (p == queue.rear) {		// 只有一个元素时 
		queue.rear = queue.front;
		free(p);
	}
	else {						 
		queue.front = p->next;
		free(p);
	}
} 


int main()
{
	 Queue queue;
	 initQueue(queue);
	 addNode(queue, 1);
	 addNode(queue, 2);
	 addNode(queue, 3);
	 delNode(queue);
}

  

posted @ 2018-03-25 11:29  GGBeng  阅读(164)  评论(0编辑  收藏  举报