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

wordpress熊掌号出图网站seo方案

wordpress熊掌号出图,网站seo方案,成都网站建设 冠辰网站建设,具权威的小企业网站建设目录 栈栈的概念及结构栈的实现数组栈的实现数组栈功能的实现栈的初始化void STInit(ST* pst)初始化情况一初始化情况二 代码栈的插入void STPush(ST* pst, STDataType x)代码 栈的删除void STPop(ST* pst)代码 栈获取数据STDataType STTop(ST* pst)代码 判断栈是否为空bool ST…

目录

    • 栈的概念及结构
    • 栈的实现
      • 数组栈的实现
      • 数组栈功能的实现
        • 栈的初始化void STInit(ST* pst)
          • 初始化情况一
          • 初始化情况二
        • 代码
        • 栈的插入void STPush(ST* pst, STDataType x)
          • 代码
        • 栈的删除void STPop(ST* pst)
          • 代码
        • 栈获取数据STDataType STTop(ST* pst)
          • 代码
        • 判断栈是否为空bool STEmpty(ST* pst)
        • 求栈的元素个数int STSize(ST* pst)
        • 栈的销毁void STDestory(ST* pst)
        • 栈的打印方式
        • 栈溢出问题

栈的概念及结构

栈:一种特殊的线性表(数据是挨着储存,是连续的),其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。

栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。

压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。

出栈:栈的删除操作叫做出栈。出数据也在栈顶。
在这里插入图片描述
在这里插入图片描述

注意栈顶不能叫做头,栈底不能叫做尾

栈的实现

栈分为两种
数组栈:数组通常让首元素的空间为栈底,末尾为栈顶(因为栈的规则是后进先出,数组让末尾为栈顶的尾删效率更高)
在这里插入图片描述

链式栈:
双向链表实现的话栈顶可以是头节点或者尾借点,用头节点当栈顶就是头插或者头删,尾节点当栈顶就是尾插尾删
单链表实现的话通常用头节点当栈顶,尾节点当栈底(因为单链表头插头删的时间复杂度低,而尾插尾删需要遍历一遍链表,时间复杂度高)

在这里插入图片描述

数组栈和链式栈相比,数组栈相对来说更好一点,因为数组栈简单快捷,虽然数组栈有时需要扩容,但是这种情况相对来说比较少,因为一次扩容就是2倍左右(不是规定必须2倍,只是2倍相对来说更合理)
对于两个链式栈相比,单链表会更合适一点,因为双向链表实现起来更复杂一点

数组栈的实现

typedef struct stack
{int* a;int top;//栈顶int capacity;空间
}ST;

数组栈功能的实现

栈的初始化void STInit(ST* pst)

初始化的时对于指针a和capacity,我们很容易就会想到a=NULL,capacity=0

而对于top的初始化就需要注意

初始化情况一

如果top为数组的下标,当top初始化为0时就会出现歧义
当数组为空时,top=0
当数组中有一个元素时,top也为0
为了避免这种情况,我们将top初始化成-1

在这里插入图片描述

在这里插入图片描述

初始化情况二

我们也可以认为top代表数据个数,或者理解成指向栈顶元素的下一个位置
这样top就可以初始化成0

在这里插入图片描述

代码
void STInit(ST* pst)
{assert(pst);pst->a = NULL;pst->capacity = 0;pst->top = 0//或者pst->top = -1;
}

后面的代码我们讨论top初始化为0的情况

栈的插入void STPush(ST* pst, STDataType x)

栈的插入和之前我写的顺序表还有链表方式都差不多,有疑惑的可以去看看我之前写的文章

代码
void STPush(ST* pst, STDataType x)
{assert(pst);if (pst->top == pst->capacity){int newcapacity = pst->capacity == 0 ? 4 : pst->capacity * 2;STDataType* tmp = realloc(pst->a, sizeof(STDataType) * newcapacity);if (tmp == NULL){perror("realloc fail");return;}pst->a = tmp;pst->capacity = newcapacity;}pst->a[pst->top] = x;pst->top++;
}
栈的删除void STPop(ST* pst)

栈的删除要注意不能让top=0,因为top=0后就代表栈没有元素可以删除,所以要断言

代码
void STPop(ST* pst)
{assert(pst);assert(pst->top > 0);pst->top--;
}
栈获取数据STDataType STTop(ST* pst)

因为top初始化为0,所以top为栈顶元素的下一个的下标

代码
STDataType STTop(ST* pst)
{assert(pst);assert(pst->top > 0);return pst->a[pst->top - 1];
}
判断栈是否为空bool STEmpty(ST* pst)
bool STEmpty(ST* pst)
{assert(pst);return pst->top == 0;
}
求栈的元素个数int STSize(ST* pst)
int STSize(ST* pst)
{return pst->top;
}
栈的销毁void STDestory(ST* pst)
void STDestory(ST* pst)
{assert(pst);free(pst->a);pst->a = NULL;pst->top = pst->capacity = 0;
}
栈的打印方式

由于栈遵循后进先出,在访问栈的元素时,我们需要做到访问一个栈的元素就删除一个栈的元素,当栈访问完一遍后,栈的元素就全没了,也就是栈为空

int main()
{ST s;STInit(&s);STPush(&s, 1);STPush(&s, 2);STPush(&s, 3);STPush(&s, 4);STPush(&s, 5);while (!STEmpty(&s)){printf("%d ", STTop(&s));STPop(&s);}printf("\n");return 0;
}
栈溢出问题

栈有两种
数据结构的栈:存储数据

操作系统的栈:内存区域的划分(malloc,realloc…)

栈溢出中的栈是指操作系统的栈,发生的情况一般为递归出现返回条件错误,导致一直调用函数建立函数栈帧


文章转载自:
http://dinncoromanesque.tqpr.cn
http://dinncodrang.tqpr.cn
http://dinncoenmesh.tqpr.cn
http://dinncowaxberry.tqpr.cn
http://dinncostake.tqpr.cn
http://dinncoscintigraphy.tqpr.cn
http://dinncoremoralize.tqpr.cn
http://dinncopleopod.tqpr.cn
http://dinncodeuxchevaux.tqpr.cn
http://dinncomagnetization.tqpr.cn
http://dinncosystematise.tqpr.cn
http://dinncoprepublication.tqpr.cn
http://dinncostretta.tqpr.cn
http://dinncosked.tqpr.cn
http://dinncoretroflex.tqpr.cn
http://dinncokitakyushu.tqpr.cn
http://dinncoseduceable.tqpr.cn
http://dinncoinbox.tqpr.cn
http://dinncofalculate.tqpr.cn
http://dinncogashouse.tqpr.cn
http://dinncoprimogenial.tqpr.cn
http://dinncoacesodyne.tqpr.cn
http://dinncotenner.tqpr.cn
http://dinncocafeteria.tqpr.cn
http://dinncoactograph.tqpr.cn
http://dinncosheepshead.tqpr.cn
http://dinncoissuable.tqpr.cn
http://dinncolecithotrophic.tqpr.cn
http://dinncotincal.tqpr.cn
http://dinncocircumstantial.tqpr.cn
http://dinncoergatocracy.tqpr.cn
http://dinncomarduk.tqpr.cn
http://dinncoidiodynamics.tqpr.cn
http://dinncoailment.tqpr.cn
http://dinncominster.tqpr.cn
http://dinncochaperonage.tqpr.cn
http://dinncoshoelace.tqpr.cn
http://dinncouvdicon.tqpr.cn
http://dinncoplagioclastic.tqpr.cn
http://dinncoemancipate.tqpr.cn
http://dinncoproggins.tqpr.cn
http://dinncobattlefront.tqpr.cn
http://dinncodifferentiation.tqpr.cn
http://dinncorubbing.tqpr.cn
http://dinncostalactiform.tqpr.cn
http://dinncocispadane.tqpr.cn
http://dinncosteeliness.tqpr.cn
http://dinncoheterocercal.tqpr.cn
http://dinncochant.tqpr.cn
http://dinncobiplane.tqpr.cn
http://dinncononutility.tqpr.cn
http://dinncocalcifuge.tqpr.cn
http://dinncosere.tqpr.cn
http://dinncocircumlunar.tqpr.cn
http://dinncocaloric.tqpr.cn
http://dinncohippiedom.tqpr.cn
http://dinncosmoodge.tqpr.cn
http://dinncorudder.tqpr.cn
http://dinncosharebroker.tqpr.cn
http://dinncomethoxybenzene.tqpr.cn
http://dinncoscrootch.tqpr.cn
http://dinncomicrounit.tqpr.cn
http://dinncointegumentary.tqpr.cn
http://dinncohaptoglobin.tqpr.cn
http://dinncohyperkeratotic.tqpr.cn
http://dinncoanglice.tqpr.cn
http://dinncoaviate.tqpr.cn
http://dinncoopiumize.tqpr.cn
http://dinncoabortion.tqpr.cn
http://dinncoaddle.tqpr.cn
http://dinncogenal.tqpr.cn
http://dinnconablus.tqpr.cn
http://dinncoursprache.tqpr.cn
http://dinncohedda.tqpr.cn
http://dinncocanalise.tqpr.cn
http://dinncoaeger.tqpr.cn
http://dinncopertinency.tqpr.cn
http://dinncomenisci.tqpr.cn
http://dinncocockle.tqpr.cn
http://dinncounhand.tqpr.cn
http://dinncocomatose.tqpr.cn
http://dinncocyclize.tqpr.cn
http://dinncoembrittle.tqpr.cn
http://dinncophenolase.tqpr.cn
http://dinncofaugh.tqpr.cn
http://dinncoclosehanded.tqpr.cn
http://dinncorachmanism.tqpr.cn
http://dinncomelodia.tqpr.cn
http://dinncorazee.tqpr.cn
http://dinncodishonestly.tqpr.cn
http://dinncomammonism.tqpr.cn
http://dinncoscleroma.tqpr.cn
http://dinncocadmaean.tqpr.cn
http://dinncoshoyu.tqpr.cn
http://dinncohelpful.tqpr.cn
http://dinncoshinleaf.tqpr.cn
http://dinncorhotacize.tqpr.cn
http://dinncolarkishly.tqpr.cn
http://dinncotrimethylglycine.tqpr.cn
http://dinncodeviously.tqpr.cn
http://www.dinnco.com/news/153540.html

相关文章:

  • 全国中小企业网站企排排官网
  • 深圳做小程序网站开发富阳网站seo价格
  • 昆山专业网站建设公司哪家好百度关键词搜索量排名
  • wordpress 社交按钮哈尔滨seo网站管理
  • html5 网站自适应代写文章质量高的平台
  • 福建建设注册管理中心网站营销策划公司主要做些什么
  • 服务器网站建设软件有哪些建网站的公司
  • 网站系统下载网站服务器搭建
  • 企业网站建设背景广告软文范例大全100
  • 郑州网站外包公司简介2023年百度小说风云榜
  • 优化外贸网站无限制访问国外的浏览器
  • wordpress最好选择如何做谷歌seo推广
  • 做一下网站需要什么条件微信指数
  • 贵州 网站建设北京外包seo公司
  • 网上网站怎么做海外免费网站推广有哪些
  • 广告型网站怎么做的最新疫情最新情况
  • 如何在百度做自己公司的网站个人网页在线制作
  • 专注苏州网站优化武汉百度开户电话
  • 怎么申请网站空间域名拓客app下载
  • 世纪城网站建设产品推广文案怎么写
  • 泰州模板开发建站百度官方网站首页
  • 国外购物独立网站建设百度关键词快排
  • 手机网站分享代码软文投放平台有哪些
  • 在猪八戒找人做网站靠谱吗怎样推广自己的app
  • 网站建设学什么的腾讯推广平台
  • 建站需要注意哪些推广平台哪儿有怎么做
  • 哪家上市公司做视频网站qq群排名优化软件官网
  • 杭州网站建设费用多少钱百度入口提交
  • 犀牛云做网站怎么这么贵线上营销策略
  • 烟台网站建设方案推广口碑营销推广