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

高端行业网站建设网站怎么做海外推广

高端行业网站建设,网站怎么做海外推广,中国建筑工程网官网二建报名查询,做推广赚钱的网站有哪些前言: #x1f4a5;#x1f388;个人主页:​​​​​​Dream_Chaser#xff5e; #x1f388;#x1f4a5; ✨✨专栏:http://t.csdn.cn/oXkBa ⛳⛳本篇内容:c语言数据结构--C语言实现队列 目录 一.队列概念及结构 1.1队列的概念 1.2队列的结构 二.队列的实现 2.1头文…前言: 个人主页:​​​​​​Dream_Chaser  ✨✨专栏:http://t.csdn.cn/oXkBa ⛳⛳本篇内容:c语言数据结构--C语言实现队列 目录 一.队列概念及结构 1.1队列的概念 1.2队列的结构 二.队列的实现 2.1头文件 2.2链式队列的结构定义 2.3队列接口的定义 2.4初始化队列 2.5判断队列是否为空 2.6销毁队列 2.7队尾入队列 2.8队头出队列 2.9获取队列头部元素 2.10获取队列队尾元素 2.11获取队列中有效元素个数 2.12打印队列元素 Test.c Queue.h Queue.c 一.队列概念及结构 1.1队列的概念 队列只允许 在一端进行插入数据操作在 另一端进行删除数据操作的特殊线性表队列具有 先进先出 FIFO(First In First Out) 入队列 进行插入操作的一端称为 队尾 出队列 进行删除操作的一端称为 队头 1.2队列的结构 二.队列的实现 队列也可以数组和链表的结构实现使用链表的结构实现更优一些因为如果使用数组的结构出队列在数组头上出数据效率会比较低 2.1头文件 #includestdio.h #includeassert.h #includestdbool.h #includestdlib.h 2.2链式队列的结构定义 typedef int QDataType; typedef struct QueueNode { QDataType data;struct QueueNode* next; }QNode;typedef struct Queue {QNode* phead;QNode* ptail;int size; }Queue;//表示队列整体,一个是出数据一个是入数据.QueueNode结构体表示队列中的节点每个节点包含一个数据项 data 和一个指向下一个节点的指针 next。Queue结构体表示整个队列包含指向队列头部和尾部节点的指针 phead 和 ptail以及记录队列大小的变量 size 2.3队列接口的定义 void QueueInit(Queue* pq);// 初始化队列void QueueDestroy(Queue* pq);// 销毁队列void QueuePush(Queue* pq, QDataType x);// 队尾入队列void QueuePop(Queue* pq);// 队头出队列QDataType QueueFront(Queue* pq);// 获取队列头部元素QDataType QueueBack(Queue* pq);// 获取队列队尾元素int QueueSize(Queue* pq);// 获取队列中有效元素个数bool QueueEmpty(Queue* pq);// 检测队列是否为空如果为空返回非零结果如果非空返回0 2.4初始化队列 void QueueInit(Queue* pq) {assert(pq);// 检查指针是否为空pq-pheadNULL; //将队列的头指针置为空pq-ptail NULL;//将队列的尾指针置为空pq-size 0;// 将队列的头指针置为空 }2.5判断队列是否为空 bool QueueEmpty(Queue* pq) {assert(pq);//方法一,将队列的头指针以及尾指针置空//return pq-phead NULL pq-ptailNULL;//方法二,将队列的有效元素置空return pq-size 0; } 2.6销毁队列 代码解析: assert(pq) 用于断言 pq 指针不为空确保传入的指针有效。 创建一个指针 cur并将其初始化为队列的头指针 pq-phead。 进入循环遍历队列中的每个节点。 在循环中首先保存当前节点的下一个节点指针为 next以便在释放当前节点后能够访问下一个节点。 使用 free(cur) 释放当前节点的内存。 将指针 cur 移动到下一个节点即 cur next。 循环继续直到遍历完队列中的所有节点。 在循环结束后将队列的头指针和尾指针 pq-phead、pq-ptail 都置为空表示队列已经为空。 将队列的大小 pq-size 置为 0表示队列中没有元素。 void QueueDestroy(Queue* pq) {assert(pq);// 检查指针是否为空QNode* cur pq-phead;// 创建一个指针 cur指向队列的头指针while (cur){QNode* next cur-next;// 创建一个指针 cur指向队列的头指针free(cur);// 释放当前节点的内存cur next;// 将指针 cur 移动到下一个节点}pq-phead pq-ptail NULL;// 将队列的头指针和尾指针置为空pq-size 0;// 将队列的大小置为0 } 2.7队尾入队列 第一种情况:尾插第一个队列元素 第二种情况:已有元素前提下尾插节点 先尾插节点后把新节点的地址给ptail(让ptail指向新节点) void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));// 创建一个新的节点if (newnode NULL){perror(malloc fail\n);// 检查内存分配是否成功return;}newnode-data x;// 设置新节点的数据为传入的元素值newnode-next NULL;// 将新节点的指针域置空//一个节点if (pq-ptail NULL)// 判断队列是否为空{assert(pq-phead NULL);// 如果队列为空头指针也应为空pq-phead pq-ptail newnode;// 将新节点同时设置为队列的头节点和尾节点}//多个节点else{pq-ptail-next newnode;// 将新节点同时设置为队列的头节点和尾节点pq-ptail newnode;// 更新队列的尾指针为新节点}pq-size;// 增加队列的大小计数 } 代码执行:  2.8队头出队列 第一种:队列只有一个元素时 第二种:队列有多个元素时 void QueuePop(Queue* pq) {assert(pq);// 检查指针是否为空assert(!QueueEmpty(pq));// 检查队列是否非空assert(pq-phead);// 检查队列的头指针是否存在//1.一个节点if (pq-phead-next NULL) // 队列只有一个节点的情况{free(pq-phead); // 释放队列头节点的内存pq-phead pq-ptail NULL;// 将队列的头指针和尾指针置为空}//2.多个节点else{QNode* next pq-phead-next; //保存队列头节点的下一个节点指针free(pq-phead);// 释放队列头节点的内存pq-phead next;// 更新队列的头指针为下一个节点}pq-size--;//减少队列的大小计数 }代码执行:  2.9获取队列头部元素 QDataType QueueFront(Queue* pq) {assert(pq);// 检查指针是否为空assert(!QueueEmpty(pq));// 检查队列是否非空assert(pq-phead);// 检查队列的头指针是否存在return pq-phead-data;// 返回队列头节点的数据 } 代码执行: 2.10获取队列队尾元素 QDataType QueueBack(Queue* pq) {assert(pq);// 检查队列是否非空assert(!QueueEmpty(pq));// 检查队列是否非空assert(pq-ptail);// 检查队列的尾指针是否存在return pq-ptail-data;//返回队列尾节点的数据 } 代码执行: 2.11获取队列中有效元素个数 int QueueSize(Queue* pq) {assert(pq);//检查指针是否为空return pq-size;//返回队列的大小元素个数 } 代码执行: 2.12打印队列元素 void QPrint(Queue* pq) {assert(pq);QNode* cur pq-phead;QNode* next cur;while (cur ! NULL){printf(%d , cur-data);cur cur-next;} } 代码执行:  Test.c #includeQueue.h void TestQueue1()//元素入队列 {Queue q;QueueInit(q);QueuePush(q,1);QueuePush(q,2); //printf(%d , QueueFront(q));//QueuePop(q);QueuePush(q,3);QueuePush(q,4);//printf(Size:%d\n, QueueSize(q));//QPrint(q);while (!QueueEmpty(q)){printf(%d , QueueFront(q));QueuePop(q);}printf(\n); } void TestQueue2()//元素出队列 {Queue q;QueueInit(q);QueuePush(q, 1);QueuePush(q, 2);QueuePush(q, 3);QueuePush(q, 4);printf(%d\n, QueueFront(q));QueuePop(q);printf(%d\n, QueueFront(q));QueuePop(q);printf(%d\n, QueueFront(q));QueuePop(q);printf(%d\n, QueueFront(q));printf(\n); } void TestQueue3()//获取队列头部和尾部元素,和队列元素个数 {Queue q;QueueInit(q);QueuePush(q, 1);QueuePush(q, 2);QueuePush(q, 3);QueuePush(q, 4);printf(队列头部元素:%d\n,QueueFront(q));printf(队列尾部元素:%d\n, QueueBack(q));printf(Size:%d\n, QueueSize(q));/*while (!QueueEmpty(q)){printf(%d , QueueFront(q));QueuePop(q);}*/printf(\n); } void TestQueue4()//打印队列 {Queue q;QueueInit(q);QueuePush(q, 1);QueuePush(q, 2);QueuePush(q, 3);QueuePush(q, 4);QPrint(q);printf(\n); } int main() {//TestQueue1();//元素入队列//TestQueue2();//元素出队列//TestQueue3();//获取队列头部和尾部元素,和队列元素个数TestQueue4(); } Queue.h #pragma once #includestdio.h #includeassert.h #includestdbool.h #includestdlib.h typedef int QDataType; typedef struct QueueNode { QDataType data;struct QueueNode* next; }QNode;typedef struct Queue {QNode* phead;QNode* ptail;int size; }Queue;//表示队列整体,一个是出数据一个是入数据.void QueueInit(Queue* pq);// 初始化队列 void QueueDestroy(Queue* pq);// 销毁队列 void QueuePush(Queue* pq, QDataType x);// 队尾入队列 void QueuePop(Queue* pq);// 队头出队列 QDataType QueueFront(Queue* pq);// 获取队列头部元素 QDataType QueueBack(Queue* pq);// 获取队列队尾元素 int QueueSize(Queue* pq);// 获取队列中有效元素个数 bool QueueEmpty(Queue* pq);// 检测队列是否为空如果为空返回非零结果如果非空返回0Queue.c #includeQueue.h void QueueInit(Queue* pq) {assert(pq);// 检查指针是否为空pq-pheadNULL; // 将队列的头指针置为空pq-ptail NULL;// 将队列的头指针置为空pq-size 0;// 将队列的头指针置为空 }void QPrint(Queue* pq) {assert(pq);QNode* cur pq-phead;QNode* next cur;while (cur ! NULL){printf(%d , cur-data);cur cur-next;} }void QueueDestroy(Queue* pq) {assert(pq);// 检查指针是否为空QNode* cur pq-phead;// 创建一个指针 cur指向队列的头指针while (cur){QNode* next cur-next;// 创建一个指针 cur指向队列的头指针free(cur);// 释放当前节点的内存cur next;// 将指针 cur 移动到下一个节点}pq-phead pq-ptail NULL;// 将队列的头指针和尾指针置为空pq-size 0;// 将队列的大小置为0 }void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));// 创建一个新的节点if (newnode NULL){perror(malloc fail\n);// 检查内存分配是否成功return;}newnode-data x;// 设置新节点的数据为传入的元素值newnode-next NULL;// 将新节点的指针域置空//一个节点//多个节点if (pq-ptail NULL)// 判断队列是否为空{assert(pq-phead NULL);// 如果队列为空头指针也应为空pq-phead pq-ptail newnode;// 将新节点同时设置为队列的头节点和尾节点}else{pq-ptail-next newnode;// 将新节点同时设置为队列的头节点和尾节点pq-ptail newnode;// 更新队列的尾指针为新节点}pq-size;// 增加队列的大小计数 }void QueuePop(Queue* pq) {assert(pq);// 检查指针是否为空assert(!QueueEmpty(pq));// 检查队列是否非空assert(pq-phead);// 检查队列的头指针是否存在//1.一个节点if (pq-phead-next NULL) // 队列只有一个节点的情况{free(pq-phead); // 释放队列头节点的内存pq-phead pq-ptail NULL;// 将队列的头指针和尾指针置为空}else{//头删QNode* next pq-phead-next; //保存队列头节点的下一个节点指针free(pq-phead);// 释放队列头节点的内存pq-phead next;// 更新队列的头指针为下一个节点}pq-size--;//减少队列的大小计数 }QDataType QueueFront(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));// 检查队列是否非空assert(pq-phead);// 检查队列的头指针是否存在return pq-phead-data;// 返回队列头节点的数据 }QDataType QueueBack(Queue* pq) {assert(pq);// 检查队列是否非空assert(!QueueEmpty(pq));// 检查队列是否非空assert(pq-phead);// 检查队列的头指针是否存在return pq-ptail-data;//返回队列尾节点的数据 }int QueueSize(Queue* pq) {assert(pq);//检查指针是否为空return pq-size;//返回队列的大小元素个数 } bool QueueEmpty(Queue* pq) {assert(pq);//方法一,将队列的头指针以及尾指针置空//return pq-phead NULL pq-ptailNULL;//方法二,将队列的有效元素置空return pq-size 0; } 本篇结束如有错误欢迎大家指正感谢来访
http://www.w-s-a.com/news/471299/

相关文章:

  • 平湖模板网站建设公司网页美工培训
  • 顺德网站建设市场建设工程交易中心网站
  • 深圳企业网站怎么做浪琴手表网站建设图
  • 2018网站外链怎么做济南 网站设计公司
  • 承德百度网站建设郑州网站seo优化公司
  • 四川建站模板网站公司分类信息网站制作
  • 网站开发前后端有wordpress模板安装教程视频教程
  • 有网站想修改里面的内容怎么做怎么做黑彩黑彩网站
  • 什么专业会做网站网站建设续费合同
  • 网站开发的项目开发网站做直播功能需要注册吗
  • 网站开发新手什么软件好网站设计师和ui设计师
  • 太仓苏州网站建设软件开发网站建设
  • 一个虚拟主机做2个网站吗工信部怎么查网站备案
  • 本地网站做淘宝客制作app步骤
  • 关于企业网站建设网页布局怎么设计
  • 惠州市网站设计公司裴东莞嘘网站汉建设
  • 长葛网站建站电子商务网站是什么
  • 泉做网站的公司太原网站建设开发公司
  • wordpress菜单栏的函数调用迅速上排名网站优化
  • 网站深圳广西模板厂哪家价格低
  • 搜索网站显示网页无法访问最好的网站推广
  • 巴彦淖尔市百家姓网站建设搬瓦工暗转wordpress
  • 温州鹿城区企业网站搭建云虚拟机
  • 网站的开发方法php网站商城源码
  • 旅游找什么网站好维护公司网站建设
  • 长春市长春网站制作站优化杭州企业推广网站
  • 网站建设开发设计营销公司山东网信办抓好网站建设
  • 斗图在线制作网站搜索关键词优化
  • 大连 网站建设 有限公司十大erp系统
  • 网站后台建设软件网络营销公司招聘