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

鼓楼做网站公司哪家好减少网站跳出率

鼓楼做网站公司哪家好,减少网站跳出率,展示图片的网站模板,网站首页作用目录 一、栈 1.栈的概念及结构 1.1栈的概念 1.2栈的结构示意图 2.栈的实现 2.1支持动态增长的栈的结构 2.2压栈#xff08;入栈#xff09; 2.3出栈 2.4支持动态增长的栈的代码实现 二、队列 1.队列的概念及结构 1.1队列的概念 1.2队列的结构示意图 2.队列的实…目录 一、栈 1.栈的概念及结构 1.1栈的概念 1.2栈的结构示意图 2.栈的实现 2.1支持动态增长的栈的结构 2.2压栈入栈 2.3出栈 2.4支持动态增长的栈的代码实现 二、队列 1.队列的概念及结构 1.1队列的概念 1.2队列的结构示意图 2.队列的实现 2.1队列的结构 2.2队尾入队列 2.3队头出队列 2.4队列的代码实现 一、栈 1.栈的概念及结构 1.1栈的概念 栈是一种特殊的线性表。栈只允许在固定的一端进行插入和删除数据的操作栈的插入操作叫做压栈进栈栈的删除操作叫做出栈进行数据插入和删除操作的一端叫做栈顶另一端为栈底。栈中的元素遵循先进后出的原则。 1.2栈的结构示意图 2.栈的实现 栈一般分为静态栈和支持动态增长的栈静态栈由于栈的空间大小固定不具实用性所以我们只针对支持动态增长的栈进行代码实现 2.1支持动态增长的栈的结构 栈的实现一般使用数组形式来实现支持动态增长的栈即开辟一个动态数组a用来存储数据当栈的容量满了之后方便扩容。 // 支持动态增长的栈 typedef int STDataType; typedef struct Stack {STDataType* a;int top; // 栈顶int capacity; // 容量 }Stack; 2.2压栈入栈 每次压栈首先检查栈的容量是否已满再决定是否需要扩容压栈的元素变为新的栈顶 // 入栈 void StackPush(Stack* ps, STDataType data) {assert(ps);if (ps-top ps-capacity){int newcapacity ps-capacity 0 ? 5 : (ps-capacity) * 2;STDataType* tmp (STDataType*)realloc(ps-a, sizeof(STDataType) * newcapacity);if (tmp NULL){perror(realloc:);return;}ps-a tmp;ps-capacity newcapacity;}ps-a[ps-top] data;ps-top; } 2.3出栈 出栈后新的栈顶变为出栈前的栈顶的前一个元素 // 出栈 void StackPop(Stack* ps) {assert(ps);assert(!StackEmpty(ps));ps-top--; } 2.4支持动态增长的栈的代码实现 #pragma once #includeassert.h #includestdlib.h #includestdio.h// 支持动态增长的栈 typedef int STDataType; typedef struct Stack {STDataType* a;int top; // 栈顶int capacity; // 容量 }Stack;// 初始化栈 void StackInit(Stack* ps) {assert(ps);ps-a NULL;ps-top 0;//top指向栈顶的下一个位置,对top的操作需要是先使用后ps-capacity 0; }// 入栈 void StackPush(Stack* ps, STDataType data) {assert(ps);if (ps-top ps-capacity){int newcapacity ps-capacity 0 ? 5 : (ps-capacity) * 2;STDataType* tmp (STDataType*)realloc(ps-a, sizeof(STDataType) * newcapacity);if (tmp NULL){perror(realloc:);return;}ps-a tmp;ps-capacity newcapacity;}ps-a[ps-top] data;ps-top; }// 出栈 void StackPop(Stack* ps) {assert(ps);assert(!StackEmpty(ps));ps-top--; }// 获取栈顶元素 STDataType StackTop(Stack* ps) {assert(ps);assert(!StackEmpty(ps));return ps-a[ps-top - 1]; }// 获取栈中有效元素个数 int StackSize(Stack* ps) {assert(ps);return ps-top; }// 检测栈是否为空如果为空返回非零结果如果不为空返回0 int StackEmpty(Stack* ps) {assert(ps);return ps-top 0; }// 销毁栈 void StackDestroy(Stack* ps) {assert(ps);free(ps-a);ps-a NULL;ps-top 0;ps-capacity 0; } 二、队列 1.队列的概念及结构 1.1队列的概念 不同于栈的概念队列只允许在其一端进行插入数据操作在另一端进行删除数据操作。进行插入数据操作的一端是队尾进行删除数据操作的一端是队头。队列是一种特殊的线性表遵循先进先出的原则。 1.2队列的结构示意图 2.队列的实现 2.1队列的结构 队列的实现一般使用链表的结构更优 代码 // 队列成员节点结构 typedef int QDataType; typedef struct QListNode {struct QListNode* next;QDataType data; }QNode;// 队列的结构 typedef struct Queue {QNode* front;QNode* rear;int size; }Queue; 简图 2.2队尾入队列 代码 // 队尾入队列 void QueuePush(Queue* q, QDataType data) {assert(q);QNode* NewNode (QNode*)malloc(sizeof(QNode));if (NewNode NULL){perror(malloc:);return;}NewNode-data data;NewNode-next NULL;if (q-size 0){q-front q-rear NewNode;}else{q-rear-next NewNode;q-rear q-rear-next;}q-size; } 简图 2.3队头出队列 代码 // 队头出队列 void QueuePop(Queue* q) {assert(q);//assert(!QueueEmpty(q));if (q-front q-rear){if (q-front NULL){return;}else{free(q-front);q-front q-rear NULL;}}else{QNode* Tmp q-front;q-front Tmp-next;free(Tmp);Tmp NULL;}q-size--; } 简图 2.4队列的代码实现 #pragma once #includeassert.h #includestdlib.h #includestdio.h// 链式结构表示队列成员节点 typedef int QDataType; typedef struct QListNode {struct QListNode* next;QDataType data; }QNode;// 队列的结构 typedef struct Queue {QNode* front;QNode* rear;int size; }Queue;// 初始化队列 void QueueInit(Queue* q) {assert(q);q-front q-rear NULL;q-size 0; }// 队尾入队列 void QueuePush(Queue* q, QDataType data) {assert(q);QNode* NewNode (QNode*)malloc(sizeof(QNode));if (NewNode NULL){perror(malloc:);return;}NewNode-data data;NewNode-next NULL;if (q-size 0){q-front q-rear NewNode;}else{q-rear-next NewNode;q-rear q-rear-next;}q-size; }// 队头出队列 void QueuePop(Queue* q) {assert(q);//assert(!QueueEmpty(q));if (q-front q-rear){if (q-front NULL){return;}else{free(q-front);q-front q-rear NULL;}}else{QNode* Tmp q-front;q-front Tmp-next;free(Tmp);Tmp NULL;}q-size--; }// 获取队列头部元素 QDataType QueueFront(Queue* q) {assert(q);assert(!QueueEmpty(q));return q-front-data; }// 获取队列队尾元素 QDataType QueueBack(Queue* q) {assert(q);assert(!QueueEmpty(q));return q-rear-data; }// 获取队列中有效元素个数 int QueueSize(Queue* q) {assert(q);return q-size; }// 检测队列是否为空如果为空返回非零结果如果非空返回0 int QueueEmpty(Queue* q) {assert(q);return q-size 0 ? 1 : 0; }// 销毁队列 void QueueDestroy(Queue* q) {assert(q);while(!QueueEmpty(q)){QueuePop(q);} }
http://www.dnsts.com.cn/news/110636.html

相关文章:

  • 网站开发哪家公司好wordpress 后台登录
  • 马鞍山网站建设服务开发ps教程自学网视频全集
  • 成都网站建设推广好公司网站建设价格低
  • 个人的网站建设目标怎么给自己的品牌做网站
  • 上海网站推广找哪家东莞seo外包平台
  • 平凉网站设计网站移动版怎么做
  • 沙田镇网站仿做广德县住房和城乡建设网站
  • 装修公司的口碑排名优化营商环境条例
  • 泰州网站建设专业团队网站开发的四个高级阶段包括
  • 广州做网站哪间公司好做脚垫版型的网站
  • 满城住房和城乡建设局网站广东华业建设有限公司网站
  • 济南建站培训网页设计与制作项目教程陈义文
  • 电子商务的网站设计跑步机 东莞网站建设
  • 个人备案网站改企业备案响应式单页网站模板
  • 临沂设计网站的公司服务器搭建网站能ping t
  • 企业网站建设深圳在线看网址不收费不登录
  • 上海网站建设的价格云南省住房和城乡建设厅网站首页
  • 微信小程序赚钱桔子seo
  • 西安网站建设创意选择响应式网站
  • 成都市四方建设工程监理有限公司网站网站备案繁琐工作
  • 如何查看网站ftp地址怎么做网站注册的网页
  • 南宁外贸网站建设功能公司centos7使用wordpress
  • 万能网站网址下载网站的建设费用预算
  • 广告网站建设方案新网站应该怎么做seo
  • 合作市建设局网站网站开发并发处理
  • 清晰化网站中信建设有限责任公司海外地位
  • 郑州的兼职网站建设好的网站建设专业公司
  • 网站建设图书馆管理系统深圳网红打卡旅游景点
  • 电子商务网站建设服务外包通用软件开发
  • 基于wordpress门户网站网站建设的局限性