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

电白区住房和城乡建设部门户网站广州 四合一网站开发

电白区住房和城乡建设部门户网站,广州 四合一网站开发,广州做蛋糕的网站,免费公众号编辑模板系列文章目录 文章目录系列文章目录前言一、栈二、栈的实现三、接口函数的实现1、初始化2、销毁栈3、压栈与出栈4、判空5、元素个数6、返回栈顶元素四、栈中元素的访问总结前言 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 一、…

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、栈
  • 二、栈的实现
  • 三、接口函数的实现
    • 1、初始化
    • 2、销毁栈
    • 3、压栈与出栈
    • 4、判空
    • 5、元素个数
    • 6、返回栈顶元素
  • 四、栈中元素的访问
  • 总结


前言

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。


一、栈

在这里插入图片描述

栈的结构如上图所示:像一个桶,元素是在竖直放入的。
在这里插入图片描述

栈只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底,即元素遵循后进先出的原则,但注意这个是相对于栈内的元素。

二、栈的实现

在这里插入图片描述
我们可以用数组或链表的结构来实现栈,但栈这种数据结构是不存在随即插入这种方式的,因为它只能尾插。
我们以链表的方式来模拟的时候,我们需要不断地找尾,这个过程的时间复杂度是O(N)。所以我们是用数组可以更好的来实现栈的结构。

typedef struct Stack
{STDataType* a;int capacity;int top;
}ST;

三、接口函数的实现

1、初始化

void StackInit(ST* ps)
{assert(ps);ps->capacity = 4;ps->a = (STDataType*)malloc(sizeof(STDataType)*(ps->capacity));assert(ps->a);ps->top = 0;//栈顶元素的下一位置下标 top = 0/ 栈顶元素 top = -1
}

默认开辟四个元素大小空间,将top设为0,capacity设置为4。

2、销毁栈

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

3、压栈与出栈

void StackPush(ST* ps, STDataType x)
{assert(ps);//扩容if (ps->top == ps->capacity){ps->a = (STDataType*)realloc(ps->a, sizeof(STDataType) * ps->capacity * 2);ps->capacity *= 2;assert(ps->a);}ps->a[ps->top] = x;ps->top++;
}
void StackPop(ST* ps)
{assert(ps);assert(ps->top > 0);ps->top--;
}

压栈是尾部插入元素,所以要注意可能要扩容。
当一个栈为空的时候,恰好就是top为0的时候。

4、判空

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

当一个栈为空的时候,恰好就是top为0的时候,因此,我们可以通过top来判断栈是否为空。

5、元素个数

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

6、返回栈顶元素

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

四、栈中元素的访问

栈是无法像顺序表和链表那样不断地遍历元素的。因为,想要遍历元素必须取出栈顶元素,也就是说,我们必须删除栈顶的元素才能访问到下一个元素。因此,栈只能遍历一次,遍历一次之后就代表着栈已经空了。


总结

栈的特点就是后进先出。
任何问题都有解决的办法,无法可想的事是没有的。——爱迪生

http://www.bjxfkj.com.cn/article/109028.html

相关文章:

  • 网站会员系统方案三只松鼠网站怎样做
  • 临西网站建设东莞东城租房
  • 大连学校网站建设房子装修设计网
  • 英语门户网站织梦源码企业电子商务网站建设
  • 注册网站免费注册邮箱找人建设一个网站多少钱
  • t恤图案设计网站wordpress修改用户头像
  • 保定外贸网站建设wordpress安装的网址路径
  • 阿里巴巴做网站教程怎么查网站建设是哪家公司
  • 北京 网站设计公司关于网站建设营销类文章
  • 有注入漏洞的网站源码哪个公司做网站便宜
  • 网站建设的开发方式和费用网页布局的类型有哪些
  • 北京都有那些做网站的公司含山县建设局网站
  • 兰州网站制作要多少钱网站首页设计有限公司
  • 北京模板网站建设全包贵州省建设厅考证官方网站
  • 广州做网站信科分公司erp系统是干嘛的
  • 网站网页设计制作网站建设规模与类别
  • 做评测好的视频网站网站兼容手机
  • 天津网站建设哪家有最新版的wordpress怎么添加特征图
  • 案例网站模板_案例网商城网站的建设费用
  • asp net做购物网站网站开发 改进
  • 黄埔营销型网站建设棕色网站设计
  • 自助制作网站广州公共资源交易中心官网
  • 怎么用wordpress做网站网站建设合同简单模板
  • 小城市企业网站建设广州互助网站开发
  • 做网站大量视频怎么存储做网站税费
  • 公司网站ICP怎么备案呢Wordpress插件完全删除
  • 莆田网站制作报价无锡哪里建设网站
  • 东方购物商城重庆seo代理
  • 英文网站推广方法做网站霸屏公司销售好做吗
  • 网站 翻页 实现昌大建设始建于哪个地区