队列的链式存储实现c语言
来源:互联网 发布:数据库关系模型的概念 编辑:程序博客网 时间:2024/05/18 00:31
队列的链式存储
队列的基本操作c语言实现与栈相反,队列是一种先进先出(FIFO)的线性表 FIFO:first in first out
#include<stdio.h>#include<malloc.h>
using namespace std;
typedef int ElemType;
typedef struct QNode{ //结点的定义
ElemType data;
QNode *next;
}QNode,*QueuePtr;
typedef struct //链式存储队列的定义
{
QueuePtr front; //头指针
QueuePtr rear; //尾指针
}LinkQueue;
bool InitQueue(LinkQueue &Q) //队列的初始化
{
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front) return false;
Q.front->next=NULL;
return true;
}
bool EmptyQueue(LinkQueue Q) //判断队列是否为空
{
if(Q.front==Q.rear) return true;
else return false;
}
int GetNumber(LinkQueue Q) //返回队列元素个数
{
int count=1;
QueuePtr q=Q.front->next; //将q指向第一个元素的结点
while(q!=NULL)
{
q=q->next;
count++;
}
return count;
}
bool ClearQueue(LinkQueue &Q) //清空队列
{
QueuePtr q=Q.front->next;
if(!q) return false;
while(q!=NULL)
{
free(Q.front); //释放结点
Q.front=q;
q=q->next;
}
return true;
}
bool DestoryQueue(LinkQueue &Q)
{
QueuePtr q=Q.front;
if(!q) return false;
while(q!=NULL)
{
free(Q.front);
q=q->next;
Q.front=q;
}
return true;
}
bool EnQueue(LinkQueue &Q,ElemType elem) //入队
{
QueuePtr q=(QueuePtr)malloc(sizeof(QNode)); //初始化新结点
if(!q) return false;
q->next=NULL; //指针域赋空
q->data=elem;
Q.rear->next=q; //链接q结点
Q.rear=q; //移动尾指针
return true;
}
bool DeQueue(LinkQueue &Q,ElemType &elem) //出队
{
QueuePtr q=Q.front->next;
if(!q) return false;
Q.front=q->next;
elem=q->data;
free(q); //释放结点
return true;
}
void QueueTraverse(LinkQueue Q) //队列的遍历
{
QueuePtr q=Q.front->next;
while(q!=NULL)
{
printf("%3i",q->data);
q=q->next;
}
printf("\n");
}
int main()
{
int elem1=1;
int elem2=2;
int elem3=3;
LinkQueue Q;
InitQueue(Q);
EnQueue(Q,elem1);
EnQueue(Q,elem2);
EnQueue(Q,elem3);
printf("队列元素个数 %i\n",GetNumber(Q));
printf("队列的遍历:");
QueueTraverse(Q);
ClearQueue(Q);
if(EmptyQueue(Q)) printf("队空");
DestoryQueue(Q);
return 0;
}
阅读全文
0 0
- 队列的链式存储实现c语言
- 队列的链式结构C语言实现
- 队列的链式实现(C语言)
- 循环队列-链式存储结构-c语言实现
- 栈的链式存储实现c语言
- C语言实现链式队列
- C语言实现链式队列
- c语言实现链式队列
- c语言链式存储实现
- 队列的链式存储方式的实现(Java语言描述)
- (C语言)队列的链式实现(数据结构十一)
- 数据结构——队列的链式实现(C语言)
- C语言一个队列的实现(链式)
- 链式队列的基础操作实现(C语言)
- C链式队列的实现
- 数据结构实现链式队列(C语言)
- C语言实现一个链式队列
- 数据结构之---C语言实现链式队列
- Spring Boot教程六:集成swagger2
- (转)我40个比特币失而复得的经历
- 刚转行UI设计,无经验的我该如何选择下一份工作?
- 字符串·通讯录排序
- 手写一个线程池
- 队列的链式存储实现c语言
- 印度央行再次拉响比特币警报
- python——pygame小试——hangman
- 澳大利亚联邦银行计划在区块链上发行债券
- SelfSell亮相新加坡BlockShow区块链峰会 你的价值与世界共享
- 树莓3b 3色灯控制
- 用户和开发员对比特币趋之若鹜,苹果在此时发布Apple Pay Cash
- 获澳交所认可:交易所将用分布式账本技术来结算交易
- 区块链或将成为黑马,最快实现数字经济信誉社会