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

最优的网站建设搜索引擎的营销方法有哪些

最优的网站建设,搜索引擎的营销方法有哪些,合肥做网站公司哪家好,代理做减肥网站目录 队列的概念和结构 队列的实现 队列初始化 入队操作 出队操作 取队头的元素 判断队列是否为空 队列的销毁 队列的概念和结构 队列:只允许在一端进行插入数据操作,另一端进行删除数据操作的特殊线性结构,具有“先进先出”的特点&am…

目录

队列的概念和结构

 队列的实现

队列初始化

 入队操作

出队操作

取队头的元素 

判断队列是否为空

队列的销毁


队列的概念和结构

队列:只允许在一端进行插入数据操作,另一端进行删除数据操作的特殊线性结构,具有“先进先出”的特点,进行插入数据的一端称为队尾,出数据的一端称为队头。

 队列的实现

队列的实现还是建立三个文件,一个头文件,两个源文件。

typedef int QueDateType;typedef struct SList {struct SList* next;QueDateType date;
}SL;typedef struct Queue {SL* head;SL* tail;int size;
}Queue;

 创建两个结构体,队列的实现是用链表来实现的,如果使用数组来实现,那么效率就太低了,在进行数据删除时,需要挪动数据,在链表中删除数据就是头删,插入数据就是尾插,效率远比使用数组实现高效。

SList是一个节点,成员next 存储下一个节点的地址,date存储该节点的数据,Queue结构体包含两个节点指针,一个指向头,一个指针尾,还有size来统计节点个数。

队列初始化

函数声明

void QueInit(Queue* p);

函数定义

void QueInit(Queue* p)
{assert(p);p->head = p->tail = NULL;p->size = 0;
}

初始化队列,没有节点需要将头指针和尾指针置空,size置为0。

 入队操作

函数声明

void QuePush(Queue* p, QueDateType x);

函数定义

void QuePush(Queue* p, QueDateType x)
{assert(p);SL* newnode = (SL*)malloc(sizeof(SL));if (newnode == NULL){perror("QuePush:malloc");return;}newnode->date = x;newnode->next = NULL;if (p->size == 0){p->head = p->tail = newnode;}else{p->tail->next = newnode;p->tail = newnode;}p->size++;
}

队列的入队操作,根据队列“先进先出”特点,所以我们插入数据在尾部。

先对结构体指针断言,用malloc函数申请一片空间来存储一个节点,这时就有两种情况,一个是队列为空,和队列不为空。当队列为空时,头指针和为尾指针都指向新开辟的节点,当队列不为空,就只需要改变尾指针就可以,最后size++。

出队操作

函数声明

void QuePop(Queue* p);

函数定义

void QuePop(Queue* p)
{assert(p);assert(p->head != NULL);SL* next = p->head->next;free(p->head);p->head = NULL;p->head = next;p->size--;
}

出队操作不能一直执行,当队列为空时不可执行,因此对其断言,头指针不可以为空。定义一个节点指针来保存头指针的下一个节点的地址,这样释放头指针后还可以找到下一个节点,最后size--。

取队头的元素 

函数声明

QueDateType QueTop(Queue* p);

函数定义

QueDateType QueTop(Queue* p)
{assert(p);assert(!QueJuS(p));return p->head->date;
}

除了对结构体判空,还需要对节点个数断言,没有节点就不进行该操作,反之返回队头元素。 

判断队列是否为空

 函数声明

bool QueJuS(Queue* p);

函数定义

bool QueJuS(Queue* p)
{assert(p);return p->size == 0;
}

该函数返回类型为布尔类型,当size等于0时返回true,反之返回false。 

队列的销毁

函数声明

void QueDestroy(Queue* p);

函数定义

void QueDestroy(Queue* p)
{assert(p);SL* cur = p->head;while (cur){SL* next = cur->next;free(cur);cur = next;}p->size = 0;
}

每插入一个节点就需要进行malloc,所以销毁队列时需要对每一个节点进行空间释放,最后size置为0。 

 

 

 

 

 

 

http://www.dtcms.com/wzjs/479973.html

相关文章:

  • 开源网站后台管理系统app引导页模板html
  • 关于加强政府网站建设的意见新手怎么学电商运营
  • 郴州网红打卡景点宁德seo推广
  • 网站建设中成本怎么描述广州网络推广哪家好
  • dedecms网站地图怎么做武汉seo优化服务
  • 香港公司如何做国内网站的备案做网页设计的软件
  • wordpress里网站名称在哪里修改外贸推广是做什么的
  • 做网站需要买什么青岛关键词优化报价
  • 用双语网站做seo会不会视频号推广方法
  • 企业网站建设方案撰写深圳推广系统
  • 顺德人做多上哪个网站网络营销成功案例
  • 移动端网站开发论文seo网站优化怎么做
  • 建立网站的目的和功能现在怎么做网络推广
  • 新颖的网站策划专业网站快速
  • 自动打开多个同网站网页成都seo经理
  • 大画册设计网站游戏推广平台哪个好
  • 鞍山网站开发自己做网站如何赚钱
  • 五莲建设监理有限公司网站市场推广是做什么的
  • 通化网站建设单位如何在百度发广告推广
  • 天河网站建设制作seo视频教程汇总
  • 合肥设计工作室seo刷排名软件
  • 桂林网站建设哪家好微信推广软件有哪些
  • o2o网站建设最好公司网络广告电话
  • 枣庄建网站的公司北京网站优化托管
  • 刘金鹏做网站靠谱吗微信社群营销
  • 做360手机网站快百度关键词收录
  • 安全工程师证报考条件是什么重庆seo公司排名
  • 医疗器械做网站到哪里先备案指数函数运算法则
  • seo查询爱站网排名优化服务
  • 上海浦东新区做网站手机网站seo免费软件