链队列学习笔记

这篇博客详细介绍了链队列的定义、初始化、入队、出队、打印和获取长度等基本操作,是理解链队列概念和实现的重要学习笔记。
摘要由CSDN通过智能技术生成


一. 链队列的简单操作

以下为一些基础的操作函数。

1.1 链队列的定义

#include<bits/stdc++.h>
using namespace std;
//链队列 

typedef int ElemType;
//定义链队列 
typedef struct QNode{
	ElemType x;         	//x坐标   
	ElemType y;         	//y坐标 
	struct QNode* next;
}QNode,*QueuePtr;

typedef struct{
	QueuePtr front;
	QueuePtr rear;
}LinkQueue;

1.2 初始化链队列

//初始化链队列 
void InitQueue(LinkQueue &Q){
	Q.front=(QueuePtr)malloc(sizeof(QNode));
	Q.rear=Q.front;
	Q.rear->next=NULL;
}

1.3 入队操作和出队操作

//链队列的入队操作 
void EnQueue(LinkQueue &Q,ElemType x,ElemType y){
	QueuePtr q=(QueuePtr)malloc(sizeof(QNode));
	q->x=x;
	q->y=y;
	q->next=NULL;
	Q.rear->next=q;
	Q.rear=q;
	return;
}

//链队列的出队操作 
bool DeQueue(LinkQueue &Q,ElemType *x,ElemType *y){
	//空表返回false 
	if(Q.front==Q.rear){ 
		return false;
	}
	//头结点 
	QueuePtr q=Q.front->next;
	*x=q->x;
	*y=q->y;
	Q.front->next=q->next;
	//若链表里仅有一个结点,出队后将尾指针归NULL 
	if(Q.rear==q){
		Q.rear=Q.front;
	}
	free(q);
	return true;
} 

1.4 打印链队列

//打印队列 
void ShowQueue(LinkQueue &Q){
	QueuePtr q=Q.front->next;
	printf("队列元素:\n");
	while(q!=NULL){
		cout<<q->x<<" "<<q->y<<endl;
		q=q->next;
	}
}

1.5 链队列的长度

//链队列长度 
int QueueLength(LinkQueue &Q){
	int count=0;
	QueuePtr q=Q.front->next;
	while(q!=NULL){
		count++;
		q=q->next;
	}
	return count;
}

1.6 主函数

简单应用。

int main(){
	LinkQueue Q;
	//初始化链队列 
	InitQueue(Q);
	for(int i=0;i<=6;i++){
		//入队操作 
		EnQueue(Q,i,i);
	}
	//打印队列
	ShowQueue(Q);
	//链队列长度
	int len=QueueLength(Q); 
	cout<<"链队列长度:"<<len<<endl;
	//出队操作 
	int x,y;
	DeQueue(Q,&x,&y);
	printf("出队一次:");
	cout<<x<<" "<<y<<endl;
	//打印队列
	ShowQueue(Q);
	len=QueueLength(Q); 
	cout<<"链队列长度:"<<len<<endl;
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值