【数据结构笔记】线性表-队列(链式存储)

本文详细探讨了数据结构中的线性表——队列,重点介绍了使用链式存储实现队列的方法,涵盖了队列的基本概念、操作(入队、出队)、链式存储结构的特性及其在C++中的实现细节。
#include <iostream>
#include <stdlib.h> 


/*** 链式存储实现队列 ***/

//定义一个头结点(含有next指针和数据元素) 
typedef struct LinkNode{
	int data;
	struct LinkNode *next;
	
}LinkNode;

//定义一个队列(含有前后指针) 
typedef struct{
	LinkNode *front,*rear;
}LinkQueue;

//初始化(有头结点) 
void InitQueue(LinkQueue &Q){
	Q.front=Q.rear= (LinkNode*)malloc(sizeof(LinkNode));  //申请一个头结点,并让front和rear同时指向头结点 
	Q.front->next=NULL; 
}

//初始化(无头结点)
void InitQueue2(LinkQueue &Q){
	Q.front=NULL;
	Q.rear=NULL;
} 

//判空(有头结点) 
bool IsEmpty(LinkQueue Q){
	if(Q.front==Q.rear)
		return true;
	else
		return false;
}

//判空(无头结点)
bool IsEmpty2(LinkQueue Q){
	if(Q.front==NULL)
		return true;
	else
		return false;
}
 
//新元素入队(只在表尾,有头结点),入队是无论如何都能入队的,所以不需要用bool函数 
void EnQueue(LinkQueue &Q,int x){
	LinkNode *s=(LinkNode*)malloc(sizeof(LinkNode)); //定义一个新的结点(包含新的数据元素和指向下一个结点的指针)
	s->data=x;
	s->next=NULL;
	Q.rear->next=s;
	Q.rear=s;								 //表尾指针指向新的表尾结点 
	 
} 

//新元素入队(无头结点) 
void E
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值