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

哪里做网站比较好天津seo培训

哪里做网站比较好,天津seo培训,郴州微网站建设,天津网站开发建设公司本文属于数据结构专栏文章,适合数据结构入门者学习,涵盖数据结构基础的知识和内容体系,文章在介绍数据结构时会配合上动图演示,方便初学者在学习数据结构时理解和学习,了解数据结构系列专栏点击下方链接。 博客主页&am…

本文属于数据结构专栏文章,适合数据结构入门者学习,涵盖数据结构基础的知识和内容体系,文章在介绍数据结构时会配合上动图演示,方便初学者在学习数据结构时理解和学习,了解数据结构系列专栏点击下方链接。


  • 博客主页:Duck Bro 博客主页

  • 系列专栏:数据结构专栏

  • 关注博主,后期持续更新系列文章

  • 如果有错误请大家批评指出,博主会及时修改

  • 感谢大家点赞👍收藏⭐评论✍


数据结构入门 — 栈

本文关键字:栈、概念及结构、动图、接口实现

文章目录

  • 数据结构入门 — 栈
    • 一、 栈的概念及结构
      • 1. 栈的概念
      • 2. 栈的结构
    • 二、栈的实现
      • 1. 动态增长栈结构
      • 2. 初始化栈
      • 3. 入栈
      • 4. 出栈
      • 5. 获取栈顶元素
      • 6. 获取栈中有效元素个数
      • 7. 检测栈是否为空
      • 8. 销毁栈


一、 栈的概念及结构

1. 栈的概念

栈(Stack)是一种特殊的线性数据结构,它的特点是仅允许在一端进行插入和删除操作。这一端被称为栈顶(Top),另一端称为栈底(Bottom)。栈的操作模式为后进先出(Last In First Out,LIFO),是一种简单的“先进后出”的顺序结构。

栈通常可以用数组或链表实现,常用的操作包括入栈(Push)和出栈(Pop)。入栈操作是将新的元素插入到栈顶,出栈操作是将栈顶的元素删除并返回。此外,栈还有一些其他的操作,如获取栈顶元素(Top)、判断栈是否为空(IsEmpty)等。往栈中插入元素的操作叫做push,从栈中删除元素的操作叫做pop,查看栈顶元素的操作叫做top。
在这里插入图片描述

2. 栈的结构

栈结构可以用数组或链表实现

  1. 数组实现栈:栈底用数组下标为0的位置,栈顶用数组下标为n-1的位置(n为数组长度)。入栈操作就是将元素插入到数组末尾,出栈操作就是将数组末尾元素删除并返回。由于数组有固定的大小,因此当栈满时就无法再插入元素,这种情况称为栈溢出。

  2. 链表实现栈:链表中的每个节点保存一个元素和一个指向下一个节点的指针。栈顶指针指向链表的头部,入栈操作就是将新元素插入到链表头部,出栈操作就是将链表头部元素删除并返回。由于链表的大小能够动态地调整,因此它即使在没有预留额外空间的情况下也能灵活地添加或删除元素。

在实现栈时,还需要考虑一些细节问题,比如空栈的情况,如何判断栈满或栈空等。

二、栈的实现

1. 动态增长栈结构

使用动态增长的结构,top为栈内元素个数、capacity表示栈内的容量

typedef int STDatatype;typedef struct StackList
{STDatatype* a;int top;int capacity;
}STL;

2. 初始化栈

初始化先将指针a置为空,top、capacity置为0

void STInit(STL* pc)
{assert(pc);pc->a = NULL;pc->top = 0;pc->capacity = 0;
}

3. 入栈

这里使用realloc函数的特性,当指针为空时,跟malloc函数的效果相同,入栈即尾插

void STPush(STL* pc, STDatatype x)
{assert(pc);if (pc->capacity == pc->top){int newcapacity = pc->capacity == 0 ? 4 : pc->capacity * 2;STDatatype* temp = (STDatatype*)realloc(pc->a, sizeof(STDatatype) * newcapacity);if (temp == NULL){perror("realloc fail");exit(-1);}pc->a = temp;pc->capacity = newcapacity;}pc->a[pc->top] = x;pc->top++;
}

4. 出栈

这里的出栈,即尾删

void STPop(STL* pc)
{assert(pc);assert(pc->top > 0);--pc->top;
}

5. 获取栈顶元素

top指向栈顶的后一个,获取栈顶元素时要将top减1

STDatatype STTop(STL* pc)
{assert(pc);assert(pc->top > 0);return pc->a[pc->top - 1];
}

6. 获取栈中有效元素个数

top中记录了栈内的元素个数,直接返回top即可

int STSize(STL* pc)
{assert(pc);return pc->top;
}

7. 检测栈是否为空

如果栈内为空,则top为0就是栈是空的

bool STEmpty(STL* pc)
{assert(pc);return pc->top == 0;
}

8. 销毁栈

释放a内的内存。将top\capacity置为0

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

在这里插入图片描述

http://www.hkea.cn/news/577404/

相关文章:

  • 单页网站怎么做外链个人网页
  • 宁波城乡住房建设局网站有效的网络推广
  • 网站建设 深圳销售crm客户管理系统
  • 高端网站开发设计站长之家字体
  • 免费网站建站工具购买域名的网站
  • 淘宝联盟怎么做网站百度网站提交
  • 前端做用vue做后台多还是做网站多青岛网站快速排名优化
  • 岳阳网站开发公司海淀区seo多少钱
  • 2017年做网站维护总结百度搜索软件
  • 南京网站建设公司点击器原理
  • 网站怎么编辑搜狗网站提交入口
  • 自建网站做外贸的流程广告推广方式
  • 警告欺骗网站模板免费注册
  • 获取网站访客信息seo分析师招聘
  • 制作网页的网站有哪些网站建设
  • 日本真人做爰无遮挡视频免费网站嘉兴关键词优化报价
  • 忻州市中小企业局网站贵州整站优化seo平台
  • 网页怎么制作超链接seo兼职接单平台
  • 网站建设中应注意哪些问题重庆整站seo
  • 贵阳网站建设哪家便宜微商软文范例大全100
  • 怎么在微信上做网站竞价交易
  • wordpress优化版4.7.4网站seo设计
  • 网上课程网站精准客户数据采集软件
  • 专业网站建设报价外呼系统电销
  • 网站建设公司价格差别seo还有哪些方面的优化
  • 哪家公司建造了迪士尼乐园关键词优化推广排名多少钱
  • 做教育的网站有哪些内容吗湖南网站营销推广
  • wordpress 跳过ftp搜索引擎排名优化方案
  • 360做的网站北京营销推广公司
  • 我国政府网站建设的趋势宁波seo公司排名榜