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

阿里巴巴做网站需要多少钱房县建设局网站

阿里巴巴做网站需要多少钱,房县建设局网站,随意设计一个网站,陕西东盟建设工程有限公司网站详解C语言实现顺序队列~😎前言🙌预备小知识🙌队列的概念及结构😊1.顺序队列头文件编写🙌2.Queue.c文件的编写🙌1)队列的初始化函数实现😊2)队列的销毁函数实现&#x1f6…

详解C语言实现顺序队列~😎

  • 前言🙌
  • 预备小知识🙌
    • 队列的概念及结构😊
    • 1.顺序队列头文件编写🙌
    • 2.Queue.c文件的编写🙌
      • 1)队列的初始化函数实现😊
      • 2)队列的销毁函数实现😊
      • 3)队尾入函数实现😊
      • 4)队头出函数实现😊
      • 5)取队首元素函数实现😊
      • 6)取队尾元素函数实现😊
      • 7)队列元素个数函数实现😊
      • 2)判空函数实现😊
    • 3.Test.c文件的编写:🙌
  • 总结撒花💞

追梦之旅,你我同行

   
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
在这里插入图片描述

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘我仅已此文,手把手带领大家详解C语言实现顺序队列~ 结合链表的相关算法,根据队列先进先出的结构特点,实现我们顺序队列。都是精华内容,可不要错过哟!!!😍😍😍

预备小知识🙌

队列的概念及结构😊

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出
FIFO(First In First Out)

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

队列的结构示意图:
在这里插入图片描述

1.顺序队列头文件编写🙌

头文件的编写的整体思路分析:

这里是有关头文件的编写和各种功能函数的声明,首先用typedef关键字给存储数据类型取别名,这样做的好处是以后想要改变队列的数据类型只需修改typedef int DataType;里的int即可。定义一个结构体,DataType a,DataType Top队首元素下标,DataType Last。DataType Capacity以及队列容量。然后是各个功能函数声明*

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>typedef int DataType;
typedef struct SqQueue
{DataType* a;DataType Top;DataType Last;DataType Capacity;}SQ;
//队列的初始化
void SqQueueInit(SQ* ps);
//队列的销毁
void SqQueueDestory(SQ* ps);
//队尾入
void SqQueuePush(SQ* ps, DataType x);
//队头出
void SqQueuePop(SQ* ps);
//取队首元素
DataType SqQueueFront(SQ* ps);
//取队尾元素
DataType SqQueueBack(SQ* ps);
//队列元素个数
DataType SqQueueSize(SQ* ps);
//判空
bool SqQueueEmpty(SQ* ps);

2.Queue.c文件的编写🙌

1)队列的初始化函数实现😊

编写的整体思路分析:

先用assert确保ps指针的有效性,然后让指针a为NULL,让队列容量,头尾下标都为0.

//队列的初始化
void SqQueueInit(SQ* ps)
{assert(ps);ps->a = NULL;ps->Capacity = 0;ps->Top = ps->Last = 0;}

2)队列的销毁函数实现😊

编写的整体思路分析:

先用assert确保ps指针的有效性,然后将a指向的空间返还给操作系统。然后将a置为NULL,防止野指针的问题。然后让 ps->Last = ps->Top = ps->Capacity = 0;

/队列的销毁
void SqQueueDestory(SQ* ps)
{assert(ps);	free(ps->a);ps->a = NULL;ps->Last = ps->Top = ps->Capacity = 0;}

3)队尾入函数实现😊

编写的整体思路分析:

先用assert确保ps指针的有效性,如果ps->Last == ps->Capacity,则让节点个数增加,为0的时候先生成四个节点数,如果满了则是增2倍算法思想。然后用realloc动态申请空间,用if判断是否增容成功。然后将指针a指向新开辟的空间所在的地址,把容量数值改为newnode。如果一开始为空的情况,则让ps->a[ps->Top] = ps->a[ps->Last] = x

//队尾入
void SqQueuePush(SQ* ps, DataType x)
{assert(ps);if (ps->Last == ps->Capacity){DataType newnode = ps->Capacity == 0 ? 4 : ps->Capacity * 2;DataType* temp = (DataType*)realloc(ps->a,sizeof(DataType)*newnode);if (temp == NULL){printf("realloc fail\n");exit(-1);}ps->a = temp;ps->Capacity = newnode;}if (ps->Last == ps->Top){ps->a[ps->Top] = ps->a[ps->Last] = x;ps->Last++;}else{ps->a[ps->Last] = x;ps->Last++;}}

4)队头出函数实现😊

编写的整体思路分析:

先用assert确保ps指针的有效性,调用判空函数,如果队列为空则不用执行此操作,执行则报错。直接让Top加1即可。

//队头出
void SqQueuePop(SQ *ps)
{assert(ps);assert(!SqQueueEmpty(ps));ps->Top++;
}

5)取队首元素函数实现😊

编写的整体思路分析:

先用assert确保ps指针的有效性,直接返回下标为Top的元素的数值。

//取队首元素
DataType SqQueueFront(SQ* ps)
{assert(ps);return ps->a[ps->Top];
}

6)取队尾元素函数实现😊

编写的整体思路分析:

先用assert确保ps指针的有效性,直接返回下标为Last-1的元素的数值。

//取队尾元素
DataType SqQueueBack(SQ* ps)
{return ps->a[ps->Last-1];
}

7)队列元素个数函数实现😊

编写的整体思路分析:

先用assert确保ps指针的有效性,直接返回下标为Last的数值。

//队列元素个数
DataType  SqQueueSize(SQ* ps)
{assert(ps);return ps->Last;}

2)判空函数实现😊

编写的整体思路分析:

先用assert确保ps指针的有效性,如果 ps->Top ==ps->Last为真,则返回1,队列为空。条件为假,则返回0。

//判空
bool SqQueueEmpty(SQ* ps)
{assert(ps);return(ps->Top ==ps->Last);
}

3.Test.c文件的编写:🙌

#include"Queue.h"void Test1()
{printf("队列输出:\n");SQ s;SqQueueInit(&s);SqQueuePush(&s, 1);SqQueuePush(&s, 2);SqQueuePush(&s, 3);SqQueuePush(&s, 4);SqQueuePush(&s, 5);SqQueuePush(&s, 6);SqQueuePush(&s, 7);while (!SqQueueEmpty(&s)){printf("%d", SqQueueFront(&s));SqQueuePop(&s);}printf("\n");SqQueueDestory(&s);}
void Test2()
{SQ s;SqQueueInit(&s);SqQueuePush(&s, 1);SqQueuePush(&s, 2);SqQueuePush(&s, 3);SqQueuePush(&s, 4);SqQueuePush(&s, 5);SqQueuePush(&s, 6);SqQueuePush(&s, 7);printf("队列首元素:%d\n", SqQueueFront(&s));printf("队列尾元素:%d\n", SqQueueBack(&s));printf("队列元素个数:%d\n", SqQueueSize(&s));SqQueueDestory(&s);}int main()
{Test1();Test2();return 0;
}

功能测试结果展示图:
在这里插入图片描述

总结撒花💞

   本篇文章旨在分享详解C语言实现顺序队列。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

http://www.yayakq.cn/news/322347/

相关文章:

  • 行业平台网站开发如何查网站开发商
  • 上海企业建站流程免费制作一个自己的网站吗
  • 网站都是用什么编写的wordpress 数据库下载
  • 做去态网站要学什么语言重庆市建设工程信息网 安全监督
  • 企业网站怎么做省钱wordpress xml导入大小
  • flash网站建设技术...网络营销方式有哪些 各有什么特点
  • 淘宝网站开发的意义wordpress页面查询数据
  • 网站不被收录了网页界面模板下载
  • 网上书城 网站建设方案烟台优化网站排名
  • 网站建设行业 前景微商城分销系统设计|分销电商系统app软件
  • 上海市工程建设协会网站贴心的广州网站建设
  • 企业网站 优帮云网络营销公司加盟
  • 网易门户网站建设企业建站公司是干嘛的
  • 搭建网站架构怎么做创建公司网站难吗
  • 陇南做网站网站推广优化方案模板
  • 什么网站做视频给钱顺德建设工程交易中心网站
  • 青岛建设银行银行招聘网站软件开发外包公司
  • 网站建设助君网络网站建设维护面试
  • 广州外贸营销网站建设公司北京海淀的公司
  • 专门找人做软件的网站长垣高端建站
  • seo是做网站个人申请小程序收费吗
  • 网页制作与网站建设技术大全民和县wap网站建设公司
  • 如何备份网站joomla3.8与wordpress
  • 学校网站建设开发商vue快速搭建网站
  • 网站 后台 数据 下载如何做英文网站推广
  • 在线设计网站排名设计公司网站 唐山
  • 给一个公司做网站需要多久wordpress 升级数据库
  • 酒店网站程序广州网站优化网站建设
  • 吴中seo网站优化软件厦门医院网站建设
  • 深圳市长城建设有限公司网站长春seo优化企业网络跃升