链队C语言的使用
  6DMaaPzJglxt 2023年12月05日 78 0


链队:采用链表来存储队列

链队类型的使用

#include<stdio.h>
#include<stdlib.h>
#define maxsize 100
typedef struct QNode
{
	int data;
	struct QNode *next;
}QNode;
typedef struct
{
	QNode *front;
	QNode *rear;
}Liqueue;

初始化链队

void initQueue(Liqueue *&lqu)
{
	lqu=(Liqueue*)malloc(sizeof(Liqueue));
	lqu->front=lqu->rear=NULL;
}

判断队空

int isQueueEmpty(Liqueue *lqu)
{
	if(lqu->rear==NULL||lqu->front==NULL)
		return 1;
	else
		return 0;
}

入队算法

void enQueue(Liqueue *lqu,int x)
{
	QNode *p;
	p=(QNode*)malloc(sizeof(QNode));
	p->data=x;
	p->next=NULL;
	if(lqu->rear==NULL)//若队列空,新结点是队首结点,也是队尾结点
		lqu->front=lqu->rear=p;
	else
	{
		lqu->rear->next=p;
		lqu->rear=p;//新结点链接到队尾,p指向它
	}
}

出队算法

int deQueue(Liqueue *lqu,int &x)
{
	QNode *p;
	if(lqu->rear==NULL)//队空不能出队
		return 0;
	else
		p=lqu->front;
	if(lqu->front==lqu->rear)//队列只有一个结点的处理
		lqu->front=lqu->rear=NULL;
	else
		lqu->front=lqu->front->next;
	x=p->data;
	free(p);
	return 1;
}

虽然链队特点不存在队列满上溢
这里有个bug就是队列满的时候还继续入队,内存满

今天的链队复习就到这里


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月05日 0

暂无评论

推荐阅读
6DMaaPzJglxt