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

互联网行业的开发网站做网站开发要安装哪些软件

互联网行业的开发网站,做网站开发要安装哪些软件,网络营销有什么行业,怎样用电脑做网站目录 1. 栈 ​编辑 1.2 栈的实现 2. 代码的实现 2.1 初始化栈和销毁栈 2.2栈顶元素的插入 2.3栈顶元素的删除 栈元素删除 2.4栈顶元素的获取和栈元素的个数 1. 栈 1.1 栈的概念和结构 栈(Stack)是一种线性存储结构,它具有如下特点: &#xff0…

目录

1. 栈

​编辑

 1.2 栈的实现

2. 代码的实现

2.1 初始化栈和销毁栈

2.2栈顶元素的插入

2.3栈顶元素的删除

栈元素删除

2.4栈顶元素的获取和栈元素的个数


1. 栈

1.1 栈的概念和结构

栈(Stack)是一种线性存储结构,它具有如下特点:
(1)栈中的数据元素遵守”先进后出”(First In Last Out)的原则,简称FILO结构。
(2)限定只能在栈顶进行插入删除操作。

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

注意:我们在进行数据插入和删除操作中,都是在栈顶实现的,而另一端叫做栈底。

我们借用一下这个图来说明:

 1.2 栈的实现

我们这里可以通过两种方法实现,顺序表链表。

这里我们会发现链表要尾插或者尾删需要便利一遍链表,效率低;顺序表尾插尾删很快,但是还要解决扩容问题。

所以这里我们就引出了栈这个东西

2. 代码的实现

这里我们需要说明一下,之前我们在实现链表或者顺序表双向链表中都用的是size,为了更好的明确个数。

这里top指的是栈顶元素,如果初始化为 ” -1 “ ,指的是栈顶元素;如果为 “ 0 ” ,指的是栈顶的下一个元素。

这里面我建议是初始化为0

  • top还可以表示元素的个数,可以用来判断栈是否满了
  • 插入元素的时候直接在top的位置插入就行,然后再top++即可

 废话不多先来个头文件

typedef int STDataType;
typedef struct Stack
{STDataType* a;int top;int capacity;
}ST;void STInit(ST* pst);
void STDestroy(ST* pst);
void STPush(ST* pst, STDataType x);
void STPop(ST* pst);
STDataType STTop(ST* pst);
bool STEmpty(ST* pst);
int STSize(ST* pst);

2.1 初始化栈和销毁栈

我们首先要检查一下结构体是否为空,这里我们要注意一下

void STInit(ST* pst)
{assert(pst);pst->a = NULL;//pst->top = -1;   // top 指向栈顶数据pst->top = 0;   // top 指向栈顶数据的下一个位置pst->capacity = 0;
}

这里我们断言结构体不为空在继续,释放我们开辟的空间,将其他数据置为0

void STDestroy(ST* pst)
{assert(pst);free(pst->a);pst->a = NULL;pst->top = pst->capacity = 0;
}

2.2栈顶元素的插入

这里面我们要判断储存空间是否足够,如果没有开辟,我们可以先开辟一些空间出来;如果栈空间满了,直接将栈空间扩大二倍

void STPush(ST* pst, STDataType x)
{if (pst->top == pst->capacity){int newCapacity = pst->capacity == 0 ? 4 : pst->capacity * 2;STDataType* tmp = (STDataType*)realloc(pst->a, newCapacity * sizeof(STDataType));if (tmp == NULL){perror("realloc fail");return;}pst->a = tmp;pst->capacity = newCapacity;}pst->a[pst->top] = x;pst->top++;
}

2.3栈顶元素的删除

注意:当top为0,代表我们没有元素,不能再减下去,需要一个函数判断一下

判断函数

bool STEmpty(ST* pst)
{assert(pst);/*if (pst->top == 0){return true;}else{return false;}*/return pst->top == 0;
}

栈元素删除

void STPop(ST* pst)
{assert(pst);assert(!STEmpty(pst));pst->top--;
}

2.4栈顶元素的获取和栈元素的个数

这里面我们初始化为0,所以我们返回栈顶元素前一个元素即可;如果为空,需要我们断言一下

STDataType STTop(ST* pst)
{assert(pst);assert(!STEmpty(pst));return pst->a[pst->top - 1];
}

元素个数

int STSize(ST* pst)
{assert(pst);return pst->top;
}

以上就是今天栈实现的分享,如果喜欢的话请三联支持一下吧,感谢你的收看,我们下期再见!!!

http://www.yayakq.cn/news/743651/

相关文章:

  • 营销网站制作企业人像摄影作品
  • 网站图片导入wordpresswordpress响应式主题下载
  • 建设网站的法律可行性lol网站模板
  • 建造网站的软件新手做电商卖什么好
  • 佛山网站优化公司成都网站建设找重庆最佳科技
  • 平台网站建设推荐阿里巴巴运营免费教程
  • 建设网站需求花生壳 做网站
  • html做网站心得网站风险怎么解决方案
  • 大连做网站优化公司阿雷网站建设公司
  • 域名命名网站电商培训心得体会总结简短
  • 网站描述好看的电商网站模板下载
  • 大数据营销成功案例seo课程培训机构
  • 长沙网站建设模板网站搭建公司哪家好
  • 免费建站宝盒网站建设和推广评价指标
  • 网站建设玖金手指排名12app制作平台推荐
  • 91色做爰免费网站物流公司招聘信息
  • 资料网站怎么做房屋在线设计工具
  • seo网站优化代码建网站最低需要多少钱
  • 外贸做的社交网站凡客网能直接做网站
  • 网站vr视角怎么做wordpress文章图片显示
  • 长沙定制网站南召seo快速排名价格
  • 海口手机网站建设蛋白质结构预测工具网站开发
  • 找建网站公司加强文化网站建设
  • 莆田网站自助建站园区网站到底怎么建设
  • 池州市网站建设优化长沙做一个网站要多少钱
  • 建设项目环境影响评价公示网站免费的行情网站app入口
  • 做网站手把手asp业务网站
  • 马鞍山做网站公司wordpress底部浮窗留言
  • 做网站的公司市场微网站设计方案
  • 海外网站推广打开上海发布