目录

  • 1. 讲解:
  • 2. C++代码实现:
  • 小结:


1. 讲解:

数据结构(链队列_数据结构

2. C++代码实现:

#include <stdlib.h>
#include <iostream>

using namespace std;

#define ElemType int

typedef struct LinkNode{
	ElemType data;
	struct LinkNode* next;
}LinkNode;

typedef struct {
	LinkNode* front, * rear;
}LinkQueue;

// 初始化
void InitQueue(LinkQueue& Q) {
	Q.front = Q.rear = (LinkNode*)malloc(sizeof(LinkNode));
	Q.front->next = NULL;
}

// 判断是否为空
bool IsEmpty(LinkQueue Q) {
	if (Q.front == Q.rear) return true;
	else return false;
}

// 入队
bool EnQueue(LinkQueue& Q, ElemType e) {
	LinkNode* s = (LinkNode*)malloc(sizeof(LinkNode));
	if (s == NULL) return false;
	s->data = e;
	s->next = NULL;
	Q.rear->next = s;
	Q.rear = s;
}

// 出队
bool DeQueue(LinkQueue& Q, ElemType& e) {
	if (IsEmpty(Q)) return false;	// 空队

	LinkNode* s = Q.front->next;
	Q.front->next = s->next;
	e = s->data;
	if (s == Q.rear) {				// 最后一个元素出队时
		Q.rear = Q.front;
	}
	free(s);
	return true;
}

int main() {
	LinkQueue Q;
	InitQueue(Q); // 初始化队列

	// 入队操作
	for (int i = 1; i <= 5; ++i) {
		EnQueue(Q, i * 10);
		cout << "入队元素:" << i * 10 << endl;
	}

	// 出队操作
	ElemType e;
	while (!IsEmpty(Q)) {
		DeQueue(Q, e);
		cout << "出队元素:" << e << endl;
	}

	return 0;
}