码迷,mamicode.com
首页 > 其他好文 > 详细

链式队列的实现

时间:2014-07-22 00:32:35      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:des   blog   http   数据   io   2014   

本文原创,转载请注明来自:http://blog.csdn.net/j903829182/article/details/38011661
#include<stdio.h>
#include<malloc.h>
typedef int DataType;

typedef struct qnode{//链式队列的结点

	DataType data;//数据部分
	struct qnode *next;//指向下一个结点
}LQNode;

typedef struct{

	LQNode *front;//队头指针
    LQNode *rear;//对尾指针

}LQueue;

//初始化队列
void QueueInitiate(LQueue *q){//初始化链式队列q

	q->front=NULL;//定义初始队尾指针下标值
	q->rear=NULL;//定义初始对头指针下标值
}


//非空否
int QueueNotEmpty(LQueue q){
//判断链式队列q非空否,非空则返回1,否则返回0
	if(q.front==NULL){
	
		return 0;
	}else{
	
		return 1;
	}
}


//入队列
void QueueAppend(LQueue *q,DataType x){

	//把数据元素值x插入链式队列q的队尾
	LQNode *p;
	p=(LQNode *)malloc(sizeof(LQNode));
	p->data=x;
	p->next=NULL;
	if(q->rear!=NULL){//队列原来非空时队尾加新结点
	
		q->rear->next=p;
	}
	q->rear=p;//修改队尾指针
	if(q->front==NULL){//队列原来为空时修改对头指针
	
		q->front=p;
	}
}


//出队列
int QueueDelete(LQueue *q,DataType *d){
//删除链式队列q的对头数据元素值d,出队列成功返回1,否则返回0
	LQNode *p;
	if(q->front==NULL){
	
		printf("队列已空无数据元素出队列!!\n");
		return 0;
	}else{
	
		*d=q->front->data;
		p=q->front;
		q->front=q->front->next;//出队列结点脱链
		if(q->front==NULL){
		
			q->rear=NULL;
		}
		free(p);
		return 1;
	}
}



//取对头数据元素
int QueueGet(LQueue q,DataType *d){
	//取链式队列q的队头数据元素到d,成功返回1,否则返回0
	if(q.front==NULL){
		printf("队列已空无数据元素出队列!!\n");
		return 0;
	}else{
	
		*d=q.front->data;
		return 1;
	}
}


//撤销动态申请空间
void Destroy(LQueue q){

	LQNode *p,*p1;
	p=q.front;
	while(p!=NULL){
	
		p1=p;
		p=p->next;
		free(p1);
	}
}



void main(){}

链式队列的实现,布布扣,bubuko.com

链式队列的实现

标签:des   blog   http   数据   io   2014   

原文地址:http://blog.csdn.net/j903829182/article/details/38011661

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!