欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

队列的实现

程序员文章站 2022-03-08 09:17:15
...

闲来无事,把队列实现一下。同时也奉劝大家,没事多写写代码,看的教材再多,不自己打一遍代码,东西也不是自己的。

#include<stdio.h>
#include<stdlib.h>
typedef struct QNode//定义结点的结构 
{
	int data;
	struct QNode *next;
}QNode,*QueuePtr;

typedef struct
{
	QueuePtr front,rear;
 }LinkQueue; 
 
int initQueue(LinkQueue *q)//初始化操作 
{
	q->front=q->rear=(QueuePtr)malloc(sizeof(QNode));
	if(!q->front)
	{
		return 0;
	}
	return 0;
}

int insertQueue(LinkQueue *q,int e)
{
	QueuePtr p;
	p=(QueuePtr)malloc(sizeof(QNode));
	p->data=e;
	p->next=NULL;
	q->rear->next=p;
	q->rear=p;
	return 0;
} 

int DeleteQueue(LinkQueue *q,int *e)
{
	QueuePtr p;
	p=q->front->next;
	*e=p->data;
	q->front->next=p->next;
	if(q->rear=p)
	{
		q->rear=q->front;
	}
	free(p);
}

int DestroyQueue(LinkQueue *q)
{
	while(q->front)
	{
		q->rear=q->front->next;
		free(q->front);
		q->front=q->rear;
	}
}

int main()
{
	LinkQueue queue1;
	LinkQueue *q1;
	int *e;
	int result;
	e=&result;
	q1=&queue1;
	initQueue(q1);
	insertQueue(q1,2);
	insertQueue(q1,3);
	insertQueue(q1,4);
	insertQueue(q1,5);
	insertQueue(q1,6);
	printf("%d",q1->front->next->next->data); 
	DeleteQueue(q1,e);
	printf("%d",*e);
	DestroyQueue(q1);
	return 0;
}