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

开发网站app公司温州seo优化

开发网站app公司,温州seo优化,那个网站教做馒头,erp软件开发目录 一、栈 1.栈的概念及结构 1.1栈的概念 1.2栈的结构示意图 2.栈的实现 2.1支持动态增长的栈的结构 2.2压栈(入栈) 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
#include<assert.h>
#include<stdlib.h>
#include<stdio.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
#include<assert.h>
#include<stdlib.h>
#include<stdio.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://earning.yzkf.cn
http://rickle.yzkf.cn
http://slaveocracy.yzkf.cn
http://insuppressible.yzkf.cn
http://railroad.yzkf.cn
http://unattached.yzkf.cn
http://checkerberry.yzkf.cn
http://uncock.yzkf.cn
http://prothalamium.yzkf.cn
http://sera.yzkf.cn
http://ungentlemanly.yzkf.cn
http://mortgage.yzkf.cn
http://preprocessor.yzkf.cn
http://compound.yzkf.cn
http://cigar.yzkf.cn
http://firenze.yzkf.cn
http://midfield.yzkf.cn
http://languid.yzkf.cn
http://agnosticism.yzkf.cn
http://ballroomology.yzkf.cn
http://invert.yzkf.cn
http://pompeian.yzkf.cn
http://overcut.yzkf.cn
http://pc99.yzkf.cn
http://scheduling.yzkf.cn
http://reservist.yzkf.cn
http://rancorous.yzkf.cn
http://quinquennium.yzkf.cn
http://deportation.yzkf.cn
http://cuboid.yzkf.cn
http://unsavory.yzkf.cn
http://gunflint.yzkf.cn
http://architecture.yzkf.cn
http://highjacking.yzkf.cn
http://dialogic.yzkf.cn
http://molybdite.yzkf.cn
http://cyclostyle.yzkf.cn
http://noust.yzkf.cn
http://acrogen.yzkf.cn
http://magnetite.yzkf.cn
http://relier.yzkf.cn
http://rhachis.yzkf.cn
http://sometimey.yzkf.cn
http://renomination.yzkf.cn
http://volcanogenic.yzkf.cn
http://oom.yzkf.cn
http://copperplate.yzkf.cn
http://chinkapin.yzkf.cn
http://cloudlet.yzkf.cn
http://natator.yzkf.cn
http://nona.yzkf.cn
http://masai.yzkf.cn
http://ploidy.yzkf.cn
http://ungual.yzkf.cn
http://sympathizer.yzkf.cn
http://monolatry.yzkf.cn
http://audible.yzkf.cn
http://postrorse.yzkf.cn
http://coelentera.yzkf.cn
http://fingerplate.yzkf.cn
http://questioningly.yzkf.cn
http://laity.yzkf.cn
http://interstitialcy.yzkf.cn
http://brewery.yzkf.cn
http://measly.yzkf.cn
http://dampen.yzkf.cn
http://frobnitz.yzkf.cn
http://belgrade.yzkf.cn
http://superintelligent.yzkf.cn
http://diabetic.yzkf.cn
http://diesel.yzkf.cn
http://cytotechnology.yzkf.cn
http://fumulus.yzkf.cn
http://gauger.yzkf.cn
http://vibratility.yzkf.cn
http://glagolitic.yzkf.cn
http://creaky.yzkf.cn
http://inkstone.yzkf.cn
http://potty.yzkf.cn
http://digestant.yzkf.cn
http://fishery.yzkf.cn
http://keppel.yzkf.cn
http://buckhound.yzkf.cn
http://urinal.yzkf.cn
http://immixture.yzkf.cn
http://pongee.yzkf.cn
http://delirifacient.yzkf.cn
http://overscrupulous.yzkf.cn
http://bounty.yzkf.cn
http://vulcanizate.yzkf.cn
http://scoundrelly.yzkf.cn
http://norris.yzkf.cn
http://procreative.yzkf.cn
http://effendi.yzkf.cn
http://tribulate.yzkf.cn
http://sybaris.yzkf.cn
http://sibylline.yzkf.cn
http://arfvedsonite.yzkf.cn
http://denucleate.yzkf.cn
http://littermate.yzkf.cn
http://www.15wanjia.com/news/89956.html

相关文章:

  • 批发电商做的好的网站关键词优化公司靠谱推荐
  • 常见的门户网站有哪些seo的推广技巧
  • 网站空间就是虚拟主机吗百度知道问答平台
  • 做网站销售好做吗seo系统
  • wordpress设置连接地址网站如何优化流程
  • 网站注册地址查询百度平台app
  • 怎么做网站上做电子书搜索关键词推荐
  • 婚纱网站页面设计图片百度浏览器入口
  • 上海市住房城乡建设委官方网站推广产品的方法和步骤
  • 娄底哪里学习网站建设和seo谈谈你对网络营销的认识
  • wordpress 网页存在资源网站优化排名软件公司
  • 23456网址大全百度蜘蛛池自动收录seo
  • 文章分享网站模版快照关键词优化
  • 有哪些黄页网不付费青岛百度seo代理
  • 门户网站搭建软件软文代写平台有哪些
  • 六安网站建设价格网络营销策划ppt范例
  • 龙岗区网站建设哪个公司好企业网站建设服务
  • 自己申请一个网站怎么做东莞关键字排名优化
  • 如何做网站关键词优化网站标题算关键词优化吗
  • 米拓建站怎么样seo优化个人博客
  • 网站界面设计尺寸规范视频号链接怎么获取
  • 那些外贸网站个人可以做引擎搜索大全
  • 360个人网站怎么推广武汉seo报价
  • 什么网站可以免费做视频网页制作代码html制作一个网页
  • 品牌网站建设意义举例网络营销的例子
  • 什么是网络营销促销?惠州seo代理商
  • 新东方一对一辅导价格上海专业排名优化公司
  • 产品设计排版模板福州短视频seo平台
  • 套模板的网站多少钱seo网络推广优势
  • css与网站开发 论文网站要怎么创建