首页 > 代码库 > 链式队列的实现

链式队列的实现

链式队列数据结构如下:

typedef struct qnode{
	ElemType data;           
	struct qnode* next;   //指向下一节点指针 
}QNode;

typedef struct{
	QNode* front;     //队首指针 
	QNode* rear;      //队尾指针 
}ListQueue;

实现以下函数:

void InitQueue(ListQueue* &q);    //初始化队列 
void ClearQueue(ListQueue* &q);   //清空队列 
int QueueEmpty(ListQueue* q);    //判断队列是否为空 
int QueueLength(ListQueue* q);   //求队列长度 
void enQueue(ListQueue* &q,ElemType e);  //元素入队 
int deQueue(ListQueue* &q,ElemType &e);  //元素出队 
void DispQueue(ListQueue* q);    //输出队列 

具体实现代码:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#define ElemType int 
#define MaxSize 5
#define SWAP(A,B) a^=b;b^=a;a^=b 
#define GET_ARRAY_LENGTH(array) (sizeof(array)/sizeof(array[0]))

using namespace std;

typedef struct qnode{
	ElemType data;           
	struct qnode* next;   //指向下一节点指针 
}QNode;

typedef struct{
	QNode* front;     //队首指针 
	QNode* rear;      //队尾指针 
}ListQueue;



void InitQueue(ListQueue* &q);    //初始化队列 
void ClearQueue(ListQueue* &q);   //清空队列 
int QueueEmpty(ListQueue* q);    //判断队列是否为空 
int QueueLength(ListQueue* q);   //求队列长度 
void enQueue(ListQueue* &q,ElemType e);  //元素入队 
int deQueue(ListQueue* &q,ElemType &e);  //元素出队 
void DispQueue(ListQueue* q);    //输出队列 


void InitQueue(ListQueue* &q){
	q=(ListQueue* )malloc(sizeof(ListQueue));
	q->front=q->rear=NULL;
}

void ClearQueue(ListQueue* &q){
	 QNode* p=q->front;
	 QNode* r;
	 while(p->next!=NULL){
	 	r=p->next;
	 	free(p);
	 	p=r;
	 }
	 free(p);
	 free(q);
}

int QueueEmpty(ListQueue* q){
	return (q->front==NULL); 
} 
 
int QueueLength(ListQueue* q){
	QNode* p=q->front;
	int count=0;
	while(p!=NULL){
		p=p->next;
		count++;
	}
	return count;
}

void DispQueue(ListQueue* q){
	QNode* p=q->front;
	while(p!=NULL){
		cout<<p->data<<" ";
		p=p->next;
	}
	cout<<endl;
}

void enQueue(ListQueue* &q,ElemType e){
	QNode* add=(QNode* )malloc(sizeof(QNode));
	add->data=http://www.mamicode.com/e;>
运行结果:


链式队列的实现