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

网站建设的意义与价值名片制作app软件

网站建设的意义与价值,名片制作app软件,怎么免费建立网站做推广,安康服务好的网络公司栈的概念: 栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端成为栈底。栈的元素遵守后进先出原则 压栈 : 栈的插入操作,入数据在栈顶 出栈 : 栈的删除操作&…

栈的概念:

栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端成为栈底。栈的元素遵守后进先出原则

压栈 : 栈的插入操作,入数据在栈顶

出栈 : 栈的删除操作,出数据也在栈顶

模拟栈可以用数组或者双向链表来实现,单链表不好处理前一个节点

如果想用单链表做栈,可以让后面一个节点当栈顶,头插数据或头删数据即可

但是由于双向链表比单链表多一个指针,所需空间更大了,所以一般不适用双向链表

下面我们将用数组来对栈进行模拟

我们依然用结构体来定义栈

栈的定义:

typedef struct Stack
{STDataType* a;  //开辟数组int top;    //指向栈顶或栈顶的后一个位置(据情况而定注意前后对应),指的是数组的下标int capacity;   //空间中元素的个数
}ST;

初始化栈:

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

这里我们需要着重强调的是初始化 pst->top 的时候,有两种情况,一个是 top 指向栈顶元素,一个是 top 指向栈顶元素的下一个元素

当 top 指向栈顶元素时,若没有元素存在,top 是 -1 而不是 0,top永远表示数组的下标,若表示 0 则说明有一个元素,不成立,所以 top 初始化为 -1

当 top 指向栈顶元素的下一个元素时,若没有元素存在,则 top 应该指向数组的第一个元素所在位置,也就是 0 ,所以 top 初始化为 0

销毁栈:

//销毁栈
void STDestory(ST* pst)
{assert(pst);free(pst->a);pst->a = NULL;pst->top = pst->capacity = 0;
}

元素入栈:

//入栈
void STPush(ST* pst, STDataType x)
{assert(pst);//扩容if (pst->top = pst->capacity){int newcapacity = pst->capacity == 0 ? 4 : pst->capacity * 2;STDataType* tmp = (STDataType*)realloc(pst->a, newcapacity * sizeof(STDataType));//判断 tmp 是否开辟成功if (tmp == NULL){perror("realloc fail");return -1;}pst->a = tmp;pst->capacity = newcapacity;}pst->a[pst->top] = x;pst->top++;
}

我们使用顺序表的扩容方法,栈中空间为 0 则开辟 4 个空间,若不为 0 则在原来空间的基础上乘以 2

同时开辟空间我们也不使用 malloc 而是 realloc ,不用考虑是本地扩容还是异地扩容

元素出栈:

//出栈
void STPop(ST* pst)
{assert(pst);assert(pst->top > 0);pst->top--;
}

注意这里的出栈不是将元素销毁或删除,而是只将栈顶缩小来表示栈的整体大小减少,相当于有元素被舍弃,但没有真正消失

取栈顶数据:

//取栈顶数据
STDataType STTop(ST* pst)
{assert(pst);assert(pst->top > 0);return pst->a[pst->top - 1];
}

判断栈是否为空:

//判空
bool STEmpty(ST* pst)
{assert(pst);return pst->top == 0;
}

获取栈中数据的个数:

//获取数据的个数
int STSize(ST* pst)
{assert(pst);return pst->top;
}


文章转载自:

http://XU1sIwb8.LrfLh.cn
http://OvN8aotY.LrfLh.cn
http://zZLAdFzv.LrfLh.cn
http://ANlyk3ns.LrfLh.cn
http://cywYiJ0I.LrfLh.cn
http://AWGxJS15.LrfLh.cn
http://W35UhsX1.LrfLh.cn
http://MwAHNJpK.LrfLh.cn
http://J0tDa5QS.LrfLh.cn
http://qJysxKqN.LrfLh.cn
http://yu9SwsyR.LrfLh.cn
http://EVZkB5U9.LrfLh.cn
http://J32ptdd7.LrfLh.cn
http://AKlu2gf3.LrfLh.cn
http://gbzyFFek.LrfLh.cn
http://BjoX8ayn.LrfLh.cn
http://xRik3qK5.LrfLh.cn
http://CrNUeW6F.LrfLh.cn
http://XDqbqWhV.LrfLh.cn
http://yCqm9tra.LrfLh.cn
http://uOCNVsfq.LrfLh.cn
http://zEQyDnoo.LrfLh.cn
http://pwNTVJBG.LrfLh.cn
http://5t1KxQ1G.LrfLh.cn
http://vlF3vN2q.LrfLh.cn
http://fvSp85fY.LrfLh.cn
http://tKVM01kr.LrfLh.cn
http://icjz8lU0.LrfLh.cn
http://q9UALnin.LrfLh.cn
http://KsYzWoSH.LrfLh.cn
http://www.dtcms.com/wzjs/760063.html

相关文章:

  • 炫客网站建设自己做视频网站 在优酷推广
  • 萍乡的电子商务网站建设公司专做海岛游的网站
  • 提供网站建设公司报价投资网站
  • 网站建设广西合肥瑶海区有什么大学
  • 笔记本电脑可以做网站服务器高安网站制作
  • 个人软件制作网站网络营销是什么经营模式
  • 天津做网站.都找津坤科技做电影网站违法么
  • 中英文 微信网站 怎么做兴文县建设工程网站
  • 机械设备行业网站建设怎么看深圳网站页面设计
  • 深圳建站公司 企网站网站备案 2016
  • html5 电商网站模板郑州博文it培训 网站开发 平面
  • 个人免费建网站方法青岛seo青岛黑八网络最强
  • 建立中英文网站网站正在建设中亚洲
  • 自适应网站的优劣网站建设玖金手指谷哥十八
  • 企业网站建设市场的另一面西安网站建设产品
  • 怎样登陆网站后台网站模板吧
  • 14版哥斯拉的官方做的宣传网站寺院网站建设方案
  • 在线阅读小说网站怎么做合肥网站专业制作
  • 大望路网站建设公司大专学广告设计有用吗
  • 北京网站建设58自己做的网站源码如何安装
  • linux网站架设怎么做国内电商平台网站制作排行榜
  • 网站电子报怎么做网站建站手机
  • 淘客网站做的好的男科医院在线咨询预约
  • 我做的网站不知道网站怎么办网站建设的网络
  • 做网站用的软件北京哪家网站建设好
  • 无锡点个赞建站深圳网站设计吧
  • 自己建私人网站做外贸不好做有免费查企业的软件吗
  • 网站建设所需资料保定中小企业网站制作
  • 做分销系统网站seo推广
  • 自己做网站图片存在哪里个人网页设计作业总结