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

网站空间购买 北京百度产品

网站空间购买 北京,百度产品,优定软件网站建设,wordpress给文章标题加上序号前言 队列是一种特殊的线性表,它只允许在一端对数据进行插入操作,在另一端对数据进行删除操作的特殊线性表,队列具有先进先出的(FIFO)的 特性,进行插入操作的一端称为队尾,进行删除操作的一端称…

前言

        队列是一种特殊的线性表,它只允许在一端对数据进行插入操作,在另一端对数据进行删除操作的特殊线性表,队列具有先进先出的(FIFO)的 特性,进行插入操作的一端称为队尾,进行删除操作的一端称为队头。

1.队列的特性

        队尾:元素在队尾入队。插入操作。

        队头:元素在队头出对。删除操作。

如图:

2.队列的实现

         队列可以用 数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低,需要挪动数据,因此这里采用链表的方式来进行队列的实现。

//queue.h

#include<stdlib.h>
#include<assert.h>
#include<stdio.h>
#include<stdbool.h>
typedef int QDataType;
typedef struct QueueNode
{struct QueueNode* _next;QDataType _data;
}QueueNode;
typedef struct  Queue//队列的结构
{QueueNode* _head;//头指针QueueNode* _tail;//尾指针
}Queue;void QueueInit(Queue* qu);//初始化栈void QueueDestory(Queue* qu);//摧毁栈void QueuePush(Queue* qu,QDataType data);//入队void QueuePop(Queue* qu);//出队QDataType QueueFront(Queue* qu);//返回队头元素
QDataType QueueBack(Queue* qu);//返回队尾元素size_t QueueSize(Queue* qu);//队列长度bool QueueEmpty(Queue* qu);//判断队列是否为空

//queue.c

void QueueInit(Queue* qu)//初始化栈
{qu->_head = qu->_tail = NULL;
}
void QueueDestory(Queue* qu)//摧毁栈
{//确保指针有效assert(qu);QueueNode* cur = qu->_head;while (cur){QueueNode* next = cur->_next;free(cur);}
}
void QueuePush(Queue* qu,QDataType data)//入队
{if (qu->_head == NULL){qu->_head = (QueueNode*)malloc(sizeof(QueueNode));qu->_tail = qu->_head;qu->_head->_next = NULL;qu->_head->_data = data;}else{//尾部入数据QueueNode* cur = qu->_tail;QueueNode* newNode = (QueueNode*)malloc(sizeof(QueueNode));cur->_next = newNode;newNode->_next = NULL;qu->_tail = newNode;newNode->_data = data;}
}
void QueuePop(Queue* qu)//出队
{//队头出数据QueueNode* head = qu->_head;qu->_head = head->_next;free(head);
}
QDataType QueueFront(Queue* qu)//返回队头元素
{return qu->_head->_data;
}
QDataType QueueBack(Queue* qu)//返回队尾元素
{return qu->_tail->_data;
}
size_t QueueSize(Queue* qu)//队列长度
{assert(qu);//确保指针存在QueueNode* cur = qu->_head;size_t size = 0;while (cur){++size;cur = cur->_next;}return size;
}
bool QueueEmpty(Queue* qu)//判断队列是否为空
{return !qu->_head;
}

 

3.测试部分

        

void TestQueue()
{Queue qu;QueueInit(&qu);QueuePush(&qu, 1);QueuePush(&qu, 2);QueuePush(&qu, 3);QueuePush(&qu, 4);QueuePush(&qu, 5);QueuePush(&qu, 6);QueuePush(&qu, 7);QueuePush(&qu, 8);while (!QueueEmpty(&qu)){printf("%d ", QueueFront(&qu));QueuePop(&qu);}QueueDestory(&qu);
}

 

http://www.hlhnt8889177.com/news/625.html

相关文章:

  • 深圳私人做网站搭建网站平台需要多少钱
  • 穿越yin线的做网站排名优化哪家好
  • 网易企业邮箱登录入口官网手机版网络优化公司有哪些
  • 如何在旅游网站上做攻略百度首页推广
  • 中国有哪些网站可以做兼职百度信息流推广平台
  • 幼儿园手机网站模板西安seo全网营销
  • 子午谷网站建设今天国内新闻10条
  • 晋江在线网站建设搜索引擎推广和优化方案
  • 沈阳网站建设的公司哪家好品牌营销策划十大要点
  • 电子商务网站建设策划书网络营销方法有哪些?
  • wordpress iframe广告谷歌排名优化
  • 为什么没有网站做图文小说培训机构不退钱最怕什么举报
  • 风中有朵雨做的云在线网站推广app赚佣金接单平台
  • 专门帮做ppt的网站站长工具无忧
  • 推广哪个网站好武汉seo推广优化公司
  • 课程注册 网站开发seo是什么品牌
  • 网站建设浦东做做网站
  • 网站mip怎么做如何制定会员营销方案
  • 公司网站建设需要注意哪些问题百度seo关键词优化电话
  • 网站建设宗旨及商业模式站长工具查询域名信息
  • 郑州市男科医院哪比较好seo关键词排名注册价格
  • 利用虚拟主机建设企业网站百度关键词排名联系
  • 做电商搜素材网站都是什么成都专业的整站优化
  • 嘉峪关建设局公告网站什么是互联网营销师
  • 中国产品网免费网站综合性b2b电子商务平台网站
  • 翡翠原石网站首页怎么做山东网站建设
  • angular做门户网站百度快照优化培训班
  • 目前有做电子合同的网站吗免费的seo
  • 商河县建设局网站电商网站公司
  • 设计网站怎么做的项目推广网站