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

标题设计网站外贸定制网站建设电话

标题设计网站,外贸定制网站建设电话,jsp网站开发中js的问题,东莞做商城网站建设hello! 目录 一、概念与结构 二、队列的实现 Queue.h Queue.c test.c 一、概念与结构 1、概念:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特性。 入队列:进行插入操作…

hello!

目录

一、概念与结构

二、队列的实现

Queue.h

Queue.c

test.c


一、概念与结构

1、概念:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特性。

入队列:进行插入操作的一端称为队尾

出队列:进行删除操作的一端称为队头

2、队列底层结构的选择

队列也可以数组和链表的结构实现,使⽤链表的结构实现更优⼀些,因为如果使⽤数组的结构,出队列在数组头上出数据,效率会比较低。

二、队列的实现

Queue.h

#pragma once
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<stdbool.h>//定义队列结点的结构
typedef int QDataType;
typedef struct QueueNode
{QDataType data;struct QueueNode* next;
}QueueNode;//定义队列的结构
typedef struct Queue
{struct QueueNode* phead;struct QueueNode* ptail;int size;   //保存队列有效数据的个数
}Queue;//初始化
void QueueInit(Queue* pq);//入队列
void QueuePush(Queue* pq,QDataType x);//判空
bool QueueEmpty(Queue* pq);//出队列
void QueuePop(Queue* pq);//取队头数据
QDataType QueueFront(Queue* pq);//取队尾数据
QDataType QueueBack(Queue* pq);//队列有效元素个数
int QueueSize(Queue* pq);//销毁队列
void  QueueDestroy(Queue* pq);

Queue.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"Queue.h"//初始化
void QueueInit(Queue* pq)
{assert(pq);pq->phead = pq->ptail = NULL;pq->size = 0;
}//入队列
void QueuePush(Queue* pq, QDataType x)
{assert(pq);//申请新结点QueueNode* newnode = (QueueNode*)malloc(sizeof(QueueNode));if (newnode == NULL){perror("malloc fail!");exit(1);}newnode->data = x;newnode->next = NULL;if (pq->phead == NULL){//若队列为空pq->phead = pq->ptail = newnode;}else{//若队列不为空pq->ptail->next = newnode;pq->ptail = newnode;}pq->size++;
}//判空
bool QueueEmpty(Queue* pq)
{assert(pq);return pq->phead == NULL;
}//出队列
void QueuePop(Queue* pq)
{assert(pq);assert(!QueueEmpty(pq));//若队列里只有一个结点,避免ptail变成野指针if (pq->phead == pq->ptail){free(pq->phead);pq->phead = pq->ptail = NULL;}else{//队列不止一个结点QueueNode* next = pq->phead->next;free(pq->phead);pq->phead = next;}--pq->size;
}//取队头数据
QDataType QueueFront(Queue* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->phead->data;
}//取队尾数据
QDataType QueueBack(Queue* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->ptail->data;
}//队列有效元素个数
int QueueSize(Queue* pq)
{assert(pq);return pq->size;
}//销毁队列
void  QueueDestroy(Queue* pq)
{assert(pq);assert(!QueueEmpty(pq));QueueNode* pcur = pq->phead;while (pcur){QueueNode* next = pcur->next;free(pcur);pcur = next;}pq->ptail = pq->phead = NULL;pq->size = 0;
}

test.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"Queue.h"void QueueTest01()
{Queue q;QueueInit(&q);QueuePush(&q, 1);QueuePush(&q, 2);QueuePush(&q, 3);QueuePush(&q, 4);QueuePop(&q);/*QueuePop(&q);QueuePop(&q);QueuePop(&q);*/printf("head:%d\n",QueueFront(&q));printf("tail:%d\n",QueueBack(&q));printf("size:%d\n",QueueSize(&q));QueueDestroy(&q);}int main()
{QueueTest01();return 0;
}

我是云边有个稻草人

期待与你的下一次相遇!

http://www.yidumall.com/news/58360.html

相关文章:

  • wordpress代码修改没反应seo搜索引擎优化价格
  • 网站找百度做可以嘛什么是seo优化推广
  • 外贸网站怎么做seo优化网站优化排名方法有哪些
  • 网站怎么推广最近日网站收录查询
  • 免费咨询律师不收费的平台谷歌seo最好的公司
  • 南通做网站seo常见的优化技术
  • 钓鱼网站源码靠谱的推广平台有哪些
  • 福建住房和城乡建设部网站做小程序的公司
  • 甘肃省建设厅执业资格注册中心网站南昌seo网站排名
  • 做pc端网站一般多少钱汕头网站建设方案优化
  • 北京 经营性网站备案新闻软文怎么写
  • wordpress添加价格seo实战培训班
  • 新开的网站怎么做seo优化游戏推广员如何推广引流
  • 自己做网站需要学什么软件下载seo软文是什么
  • 网站做301重定向的作用关键词有哪些关联词
  • 龙岩网站优化郑州网站运营专业乐云seo
  • 怎样用vps做网站推广产品的渠道
  • 做网站建设销售员准备什么百度如何搜索关键词
  • k98s播放器蚁百杭州网站seo优化
  • 关于政府门户网站建设 以下说法正确的是网址搜索引擎入口
  • 宜良网站建设幽默广告软文案例
  • 微网站开发手机模拟器优化加速
  • dedecms菜谱网站源码360推广联盟
  • 梨树县住房和城乡建设局网站怎样在网上做宣传
  • 乌市高新区建设局网站seo培训优化课程
  • 龙岗网红公园关键词优化公司排名
  • 南通市区有哪几家做网站的seo优化网站优化
  • 酷站 网站模板58同城如何发广告
  • 如何做网站充值接口站长字体
  • 已备案网站注册营销策划书范文1000字