当前位置: 首页 > news >正文

网站使用功能介绍是用什么软件做的信息流广告公司一级代理

网站使用功能介绍是用什么软件做的,信息流广告公司一级代理,营销型企业网站例子,wordpress 内容 插件一、队列概述 在数据结构中,队列是一种先进先出(FIFO)的线性表。它在许多应用场景中非常有用,例如任务调度、进程管理、资源管理等。队列是一种重要的数据结构,其主要特点是先进先出(FIFO, First In First …

一、队列概述

        在数据结构中,队列是一种先进先出(FIFO)的线性表。它在许多应用场景中非常有用,例如任务调度、进程管理、资源管理等。队列是一种重要的数据结构,其主要特点是先进先出(FIFO, First In First Out)。这意味着在队列中,最先进入队列的元素将最先被移出。队列的这种特性使得它在许多实际应用中非常有用,例如打印队列、任务调度、进程管理等。

队列的基本操作包括:

  • 入队(Enqueue):将元素加入到队列的末尾。
  • 出队(Dequeue):将队列最前面的元素移出队列。
  • 获取队首元素(Front):查看队列最前面的元素,但不移出。
  • 检查队列是否为空(IsEmpty):判断队列是否为空。
  • 获取队列大小(Size):获取队列中的元素个数

今天 我将会用链表实现队列:

二、队列基本操作

队列的结点定义

首先,我们定义一个节点结构体来存储每个元素及其指向下一个节点的指针。

#define eleType int //定义队列元素数据类型//定义结点
typedef struct Node
{eleType data; //数据域struct Node* next; //指针域
} Node;

队列结构体

接下来,我们定义一个队列结构体,包含指向队首和队尾的指针以及队列中的元素个数。

//定义队列结构体
typedef struct
{Node* front; //链表头队列首元素指针Node* rear;  //队尾元素指针size_t size; //队列元素个数
} Quene;

队列的创建

初始化一个队列,需要将队首和队尾指针都设置为NULL,并将队列的大小初始化为0。、

void QueneCreat(Quene *q)
{q->front = q->rear = NULL;q->size = 0; //初始化为零
}

 队列的销毁 

销毁队列需要释放所有节点的内存,并将队首和队尾指针设置为NULL,队列的大小重置为0。

void QueneDestroy(Quene* q)
{while (q->front) //队首元素开始遍历{Node* temp = q->front; //每次遍历将队首指针存入到temp变量中q->front = q->front->next; //将队首指向后继free(temp); //删除游离出来的原来的队首结点}q->rear = NULL; //遍历完成后,将队尾指向空q->size = 0; //将队列重置为0,表示已经清空
}

入队操作

在队尾插入一个新元素。首先为新元素分配内存,然后根据队列是否为空更新队首和队尾指针。

void QuenePush(Quene* q, eleType element)
{//分配一个Node类型的空间,将其地址赋给newNode变量Node* newNode = (Node*)malloc(sizeof(Node));newNode->data = element; //将要添加的元素赋值给新结点的数据域newNode->next = NULL; //将新结点的后继结点指向空if (q->rear == NULL) //判断当前队列是否为空,只需要判断队尾是否为空q->front = q->rear = newNode; //如果为空,将队首和队尾都指向新结点else //如果不为空{q->rear->next = newNode; //将新结点排入队尾q->rear = newNode; //更新队尾结点}q->size++; //队列大小加1
}

出队操作

在队首删除一个元素。首先检查队列是否为空,然后更新队首指针并释放原队首节点的内存。

eleType QuenePop(Quene* q)
{if (q->rear == NULL) //判断队列是否为空{printf("Quene is empty!\n");exit(1); //如果为空,退出程序}eleType element = q->front->data; //将队首元素赋值给element,用于返回Node* temp = q->front; //将队首指针存储到temp变量中q->front = q->front->next; //更新队首,游离出来原来的队首free(temp); //删除原来的队首q->size--; //队列大小减1if (q->size == 0) //如果队列空了的话q->rear = NULL; //将队尾指向空return element; //
}

获取队首元素

获取队首元素的数据,而不删除队首元素。

eleType QueneFront(Quene* q)
{if (q->rear == NULL) //判断队列是否为空{printf("Quene is empty!\n");exit(1); //如果为空,退出程序}return q->front->data; //返回队首元素
}

 获取队列大小

获取队列中元素的个数。

size_t QueneSize(Quene* q)
{return q->size; //返回队列大小
}

三、完整代码 

#define  _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
#include <stdlib.h>
#define eleType int //定义队列元素数据类型//定义结点
typedef struct Node
{eleType data; //数据域struct Node* next; //指针域
} Node;//定义队列结构体
typedef struct
{Node* front; //链表头队列首元素指针Node* rear;  //队尾元素指针size_t size; //队列元素个数
} Quene;//队列的创建
void QueneCreat(Quene *q)
{q->front = q->rear = NULL;q->size = 0; //初始化为零
}//队列的销毁
void QueneDestroy(Quene* q)
{while (q->front) //队首元素开始遍历{Node* temp = q->front; //每次遍历将队首指针存入到temp变量中q->front = q->front->next; //将队首指向后继free(temp); //删除游离出来的原来的队首结点}q->rear = NULL; //遍历完成后,将队尾指向空q->size = 0; //将队列重置为0,表示已经清空
}//入队
void QuenePush(Quene* q, eleType element)
{//分配一个Node类型的空间,将其地址赋给newNode变量Node* newNode = (Node*)malloc(sizeof(Node));newNode->data = element; //将要添加的元素赋值给新结点的数据域newNode->next = NULL; //将新结点的后继结点指向空if (q->rear == NULL) //判断当前队列是否为空,只需要判断队尾是否为空q->front = q->rear = newNode; //如果为空,将队首和队尾都指向新结点else //如果不为空{q->rear->next = newNode; //将新结点排入队尾q->rear = newNode; //更新队尾结点}q->size++; //队列大小加1
}//出队
eleType QuenePop(Quene* q)
{if (q->rear == NULL) //判断队列是否为空{printf("Quene is empty!\n");exit(1); //如果为空,退出程序}eleType element = q->front->data; //将队首元素赋值给element,用于返回Node* temp = q->front; //将队首指针存储到temp变量中q->front = q->front->next; //更新队首,游离出来原来的队首free(temp); //删除原来的队首q->size--; //队列大小减1if (q->size == 0) //如果队列空了的话q->rear = NULL; //将队尾指向空return element; //
}//获取队首元素
eleType QueneFront(Quene* q)
{if (q->rear == NULL) //判断队列是否为空{printf("Quene is empty!\n");exit(1); //如果为空,退出程序}return q->front->data; //返回队首元素
}//获取队列大小
size_t QueneSize(Quene* q)
{return q->size; //返回队列大小
}

        今天介绍了如何使用链表在C语言中实现一个队列,并详细解释了每个步骤的实现方法。通过这种方式实现的队列,不仅可以动态扩展,还能高效地进行插入和删除操作。在实际应用中,这种链表实现的队列可以用于任务调度、进程管理等场景。

 

 

http://www.dt0577.cn/news/25006.html

相关文章:

  • 做网站最专业的公司怎样建网站
  • 做网站阿里巴巴好还是百度好seo推广经验
  • 怎么网站能找人做装修事网站运营方案
  • 知名网站建设设计高平网站优化公司
  • 昆明品牌网站建设商品推广软文范例200字
  • 北京网站建设的价格天惠州百度seo找谁
  • 北京最新消息今天新增病例肇庆网站快速排名优化
  • 网站建设基本要素长春seo培训
  • 网站制作什么语言最好2023年新闻小学生摘抄
  • discu论坛网站模板杭州专业seo
  • 外贸网站建站电话多少网络公司网站
  • 微信小程序 创建网站刷关键词优化排名
  • 做商城网站可以个人备案成都爱站网seo站长查询工具
  • 12360官方网站下载百度我的订单app
  • 赣州网站制作北京seo关键词排名优化软件
  • wordpress显示代码seo外链网
  • 自己怎样做网站显示危险提高工作效率心得体会
  • 网站建设服务非常好湖南岚鸿公司网络推广公司电话
  • 郑州好的企业网站建设百度商城官网首页
  • 做网站公证需要费用是多少互联网舆情监测系统
  • 做网站图片推广免费
  • 安卓手机怎么做网站云南网络推广服务
  • 关于做情侣的网站的图片大全深圳营销型网站
  • 做网站如何宣传关键词优化一年多少钱
  • 为什么做这个网站项目设计公司排名
  • 做网站的费用是多少钱关键词优化是什么意思?
  • 网站建设行业发展史天堂网
  • 做网站公司常熟seo技术分享博客
  • 郑州网站制作公司铁岭网站seo
  • 公司注册后怎么做网站百度广告搜索引擎