链队列

链队列的数据结构

typedef struct QNode{
	QElemType data;  //数据域
	struct QNode *next; //指针域 
}QNode,QueuePtr;
typedef struct LinkQueue{
	QueuePtr *front;  //队头指针
	QueuePtr *rear;   //队尾指针 
}LinkQueue;

构造一个空队列

int InitQueue(LinkQueue *Queue)
{
	Queue->front = (QueuePtr *)malloc(sizeof(QNode));
  	Queue->rear = Queue->front;
	if(!Queue->front){
		exit(1);
	}
	Queue->front->next = NULL;
	Queue->front->data = '\0';
	return 0; 
}

销毁队列

int DestoryQueue(LinkQueue *Queue)
{
	while(Queue->front){
		Queue->rear = Queue->front->next;
		free(Queue->front);
		Queue->front = Queue->rear;
	}
	return 0;
}

清为空队列

void clearQueue(LinkQueue *Queue){
	Queue->front = Queue->rear;
}

队列是否为空

int QueueEmpty(LinkQueue *Queue)
{
	int status = 0;
	if(Queue->front == Queue->rear)
	{
		printf("Queue is Empty\n");
		status = 0;
	}else{
		printf("Queue isn't Empty\n");
		status = 1;
	}
	return status;
}

返回队列长度

int QueueLength(LinkQueue *Queue)
{
	QueuePtr *p = Queue->front;  //指示指针
	int length = 0;
	while(p!=Queue->rear)
	{
		length++;
		p = p->next;
	}
	return length;
}

返回队头元素

QElemType getHead(LinkQueue *Queue)
{
	QElemType e = '\0';
	if(Queue->front==Queue->rear){
		printf("Queue is Empty\n"); 
	}
	e = Queue->front->next->data;
	return e;
}

入队

int EnQueue(LinkQueue *Queue, QElemType e)
{
	if(!Queue->front){
		exit(1);
	}
	//建立新结点
	QueuePtr *p = (QueuePtr *)malloc(sizeof(QNode));
	if(!p){
		exit(1);
	}
	p->data = e;
	p->next = NULL;
	Queue->rear->next = p;
	Queue->rear = p;
	return 0;
} 

出队

QElemType DeQueue(LinkQueue *Queue)
{
	QElemType e = '\0'; //保存返回值
	QueuePtr *p;
	if(Queue->front==Queue->rear){
		printf("Queue is Empty\n"); return e;
	}
	p = Queue->front->next;
	e = p->data;
	Queue->front->next = p->next;
	if(Queue->rear == p){    //队列中仅一个元素的情形 
		Queue->rear = Queue->front;
	}
	free(p);
	return e;
}






 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值