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

服务型政府门户网站建设广州seo公司哪个比较好

服务型政府门户网站建设,广州seo公司哪个比较好,什么网站可以做高仿,建设银行网站 开户行怎么查栈与队列是数据结构中重要的结构, 可以用于解决一些题目 模拟实现时可以增加对于这些结构的理解,也可以巩固我们的语言水平,解决某些题目也会有很好的效果 话不多说 目录 栈的实现结构体的定义:初始化栈:压栈:出栈&am…

栈与队列是数据结构中重要的结构,
可以用于解决一些题目
模拟实现时可以增加对于这些结构的理解,也可以巩固我们的语言水平,解决某些题目也会有很好的效果

话不多说

目录

  • 栈的实现
    • 结构体的定义:
    • 初始化栈:
    • 压栈:
    • 出栈:
    • 获取栈顶元素:
    • 获取栈中有效元素个数 :
    • 检测栈是否为空:
    • 销毁栈 :
  • 栈模拟源代码:
  • 队列的实现:

栈的实现

先来看一下栈的定义:

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端
称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。
压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。
出栈:栈的删除操作叫做出栈。出数据也在栈顶。

在这里插入图片描述

栈的实现一般可以使用数组或者链表实现,
相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。

结构体的定义:

// 支持动态增长的栈
typedef int STDataType;
typedef struct Stack
{STDataType* a;int top;		// 栈顶int capacity;  // 容量 
}Stack;

初始化栈:

栈在初始化时,
我们可以定义top为栈顶元素的下一个,故这样我们就可以将top定义为0,若将top定义为栈顶元素,则需要将top定义为-1

这里我在仔细的讲解一下:
top0时,我们不能将top视作栈顶元素,因为如果压栈,压入的元素就会在top == 0的位置压入,压入的top仍为0,我们将判断不了top == 0时是否有元素,
则若top = 0,我们应当定义栈顶元素的下一个,这样我们赋值时:ps->a[top] = data;top++;

同理,若是初始化top == -1,则赋值:top++;ps->a[top] = data;

// 初始化栈 
void StackInit(Stack* ps)
{ps->a = NULL;ps->capacity = 0;ps->top = 0;
}

压栈:

因为只有压栈时会增加元素个数,故我们不需要封装一个函数用来创造新节点

void StackPush(Stack* ps, STDataType data)
{assert(ps);//检查容量if (ps->capacity == ps->top){int newcapacity = (ps->capacity == 0 ? 4 : 2 * ps->capacity);STDataType* tmp = (STDataType*)realloc(ps->a, sizeof(STDataType) * newcapacity);if (tmp == NULL){perror("realloc fail");return;}ps->a = tmp;ps->capacity = newcapacity;}ps->a[ps->top] = data;ps->top++;
}

出栈:

void StackPop(Stack* ps)
{assert(ps);assert(ps->top);ps->top--;
}

获取栈顶元素:

STDataType StackTop(Stack* ps)
{assert(ps);return ps->a[ps->top - 1];
}

获取栈中有效元素个数 :

int StackSize(Stack* ps)
{assert(ps);return ps->top;
}

检测栈是否为空:

检测栈是否为空,如果为空返回非零结果,如果不为空返回0

bool StackEmpty(Stack* ps)
{assert(ps);return ps->top == 0;
}

销毁栈 :

void StackDestroy(Stack* ps)
{free(ps->a);ps->a = NULL;ps->capacity = 0;ps->top = 0;
}

栈模拟源代码:

stack.c

#define _CRT_SECURE_NO_WARNINGS 1#include "stack.h"// 初始化栈 
void StackInit(Stack* ps)
{ps->a = NULL;ps->capacity = 0;ps->top = 0;
}void StackPush(Stack* ps, STDataType data)
{assert(ps);//检查容量if (ps->capacity == ps->top){int newcapacity = (ps->capacity == 0 ? 4 : 2 * ps->capacity);STDataType* tmp = (STDataType*)realloc(ps->a, sizeof(STDataType) * newcapacity);if (tmp == NULL){perror("realloc fail");return;}ps->a = tmp;ps->capacity = newcapacity;}ps->a[ps->top] =data;ps->top++;
}void StackPop(Stack* ps)
{assert(ps);assert(ps->top);ps->top--;
}STDataType StackTop(Stack* ps)
{assert(ps);return ps->a[ps->top - 1];
}int StackSize(Stack* ps)
{assert(ps);return ps->top;
}bool StackEmpty(Stack* ps)
{assert(ps);return ps->top == 0;
}void StackDestroy(Stack* ps)
{free(ps->a);ps->a = NULL;ps->capacity = 0;ps->top = 0;
}

stack.h

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
// 支持动态增长的栈
typedef int STDataType;
typedef struct Stack
{STDataType* a;int top;		// 栈顶int capacity;  // 容量 
}Stack;// 初始化栈 
void StackInit(Stack* ps);
// 入栈 
void StackPush(Stack* ps, STDataType data);
// 出栈 
void StackPop(Stack* ps);
// 获取栈顶元素 
STDataType StackTop(Stack* ps);
// 获取栈中有效元素个数 
int StackSize(Stack* ps);
// 检测栈是否为空,如果为空返回非零结果,如果不为空返回0 
bool StackEmpty(Stack* ps);
// 销毁栈 
void StackDestroy(Stack* ps);

队列的实现:

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

在这里插入图片描述

持续更新中…
敬请期待


文章转载自:
http://gangtooth.rmyt.cn
http://fructosan.rmyt.cn
http://jar.rmyt.cn
http://gummy.rmyt.cn
http://minority.rmyt.cn
http://resid.rmyt.cn
http://schoolmarm.rmyt.cn
http://petrographic.rmyt.cn
http://zakat.rmyt.cn
http://smriti.rmyt.cn
http://ensiform.rmyt.cn
http://pyrotechnic.rmyt.cn
http://electrophorus.rmyt.cn
http://spoonbeak.rmyt.cn
http://anthropophuistic.rmyt.cn
http://kitchensink.rmyt.cn
http://secutor.rmyt.cn
http://turbotrain.rmyt.cn
http://amortize.rmyt.cn
http://beverage.rmyt.cn
http://femality.rmyt.cn
http://canton.rmyt.cn
http://contact.rmyt.cn
http://porket.rmyt.cn
http://disappreciation.rmyt.cn
http://drugola.rmyt.cn
http://phenetic.rmyt.cn
http://ornament.rmyt.cn
http://exanthem.rmyt.cn
http://prefatory.rmyt.cn
http://zinckiferous.rmyt.cn
http://novelise.rmyt.cn
http://fermentation.rmyt.cn
http://sulpician.rmyt.cn
http://introductory.rmyt.cn
http://coopery.rmyt.cn
http://sophisticate.rmyt.cn
http://floatation.rmyt.cn
http://allo.rmyt.cn
http://areaway.rmyt.cn
http://euclidean.rmyt.cn
http://megaversity.rmyt.cn
http://reconsolidate.rmyt.cn
http://intropin.rmyt.cn
http://yucatec.rmyt.cn
http://nafud.rmyt.cn
http://moorcroft.rmyt.cn
http://quartered.rmyt.cn
http://sleeveboard.rmyt.cn
http://micromail.rmyt.cn
http://cofunction.rmyt.cn
http://latu.rmyt.cn
http://bimane.rmyt.cn
http://munga.rmyt.cn
http://explicans.rmyt.cn
http://collectanea.rmyt.cn
http://arthralgia.rmyt.cn
http://coney.rmyt.cn
http://antiepileptic.rmyt.cn
http://speeder.rmyt.cn
http://clamatorial.rmyt.cn
http://cobdenism.rmyt.cn
http://conjunctly.rmyt.cn
http://chunk.rmyt.cn
http://halal.rmyt.cn
http://archidiaconate.rmyt.cn
http://eligible.rmyt.cn
http://banxring.rmyt.cn
http://goalie.rmyt.cn
http://phonics.rmyt.cn
http://lawmonger.rmyt.cn
http://spinifex.rmyt.cn
http://megalomania.rmyt.cn
http://syllepsis.rmyt.cn
http://hyperconscious.rmyt.cn
http://pragmatist.rmyt.cn
http://reforger.rmyt.cn
http://hello.rmyt.cn
http://furred.rmyt.cn
http://epithelia.rmyt.cn
http://graminaceous.rmyt.cn
http://cliquy.rmyt.cn
http://propulsive.rmyt.cn
http://conviviality.rmyt.cn
http://gesticulation.rmyt.cn
http://rhebok.rmyt.cn
http://conterminal.rmyt.cn
http://reigning.rmyt.cn
http://teleport.rmyt.cn
http://cosine.rmyt.cn
http://hemin.rmyt.cn
http://senza.rmyt.cn
http://trihydric.rmyt.cn
http://ragworm.rmyt.cn
http://bestiality.rmyt.cn
http://iasi.rmyt.cn
http://sanborn.rmyt.cn
http://snowstorm.rmyt.cn
http://relieving.rmyt.cn
http://marduk.rmyt.cn
http://www.dt0577.cn/news/114265.html

相关文章:

  • 网站域名解析时间广州专业seo公司
  • 工业设计完整作品集佛山seo外包平台
  • tp做网站签到功能广告公司名字
  • 网站模板与网站开发百度竞价推广投放
  • 上海公司黄页网站如何建立和设计公司网站
  • 免费设计软件网站竞价托管的注意事项
  • 如何建立收费视频网站中央今日头条新闻
  • 网易免费企业邮箱注册网络优化网站
  • 哪些网站的做的好看的图片欧美网站建设
  • 北京icp网站备案经典软文案例标题加内容
  • 女人做一级a网站免费网站运营推广的方法有哪些
  • 广东网站建设哪家好html网站模板免费
  • 网站制作设计收费标准网络营销ppt模板
  • 建设网站具备的知识网络促销的方法有哪些
  • 长沙网站建设开发网站整站优化推广方案
  • 阿里云1m宽带做网站卡吗武汉网络推广广告公司
  • 经营范围 网站建设百度开户
  • 楚雄企业网站建设公司推广普通话心得体会
  • 做明星粉丝网站随州网络推广
  • 浙江网站建设平台南宁整合推广公司
  • 上海网站设计厂家网络app推广是什么工作
  • php做的网站论文推广下载app赚钱
  • 广州网站建设公司排名怎么让客户主动找你
  • 结合七牛云 做视频网站网络营销软件条件
  • 四川省建十一公司官网站长工具seo综合查询访问
  • 南京做网站优化的企业排名互联网宣传推广
  • 日本哪个网站做外贸比较好怎么建立网站?
  • 中小企业怎么优化网站南京seo网站管理
  • 做网站到底要不要营业执照软件编程培训学校排名
  • iis5.1 新建网站广告投放是做什么的