《大话数据结构》-- 4.13 队列的链表式存储结构

最近在学习数据结构的相关知识,下面是《大话数据结构》中第4.13的代码,将书中的代码自己敲打了一遍,供大家参考。

 

 

// Queue.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "iostream"

typedef int ElemType;

typedef struct QNode{
	ElemType data;
	struct QNode *next;
}QNode,* QueuePtr;

typedef struct{
	QueuePtr rear;
	QueuePtr front;
}LinkQueue;

bool EnQueue(LinkQueue *Q, ElemType e){
	QueuePtr q = (QueuePtr)malloc(sizeof(QNode));
	if (!q){
		exit(OVERFLOW);
	}

	q->data = e;
	q->next = NULL;
	Q->rear->next = q;
	Q->rear = q;
}

void PrintQ(LinkQueue *Q){
	QueuePtr temp = Q->front->next;

	while (temp){
		printf("%d   ", temp->data);

		temp = temp->next;
	}
	printf("\n");
}

bool DeQueue(LinkQueue *Q){
	QueuePtr q;
	if (Q->front == Q->rear)
		return 0;

	q = Q->front->next;
	Q->rear->next = q->next;

	if (Q->rear == q){
		Q->rear = Q->front;
	}
	free(q);
	return 1;


}




int _tmain(int argc, _TCHAR* argv[])
{
	LinkQueue *Q = (LinkQueue*)malloc(sizeof(LinkQueue));
	QNode *a = (QueuePtr)malloc(sizeof(QNode));
	Q->front = a;
	Q->rear = Q->front;
	for (int i = 0; i < 5; i++){
		EnQueue(Q, i);
		PrintQ(Q);
	}
			DeQueue(Q);

	return 0;
}

 

你可能感兴趣的:(大话数据结构)