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

深圳制作网站培训学校手机网站对企业用户的好处

深圳制作网站培训学校,手机网站对企业用户的好处,北京网站备案查询,天津网站快速备案目录 前言 一、栈的概念 1、栈的基本定义 2、栈的特性 二、栈的基本操作 1.相关操作概念 2.实现方式 #xff08;1#xff09;顺序栈 #xff08;2#xff09;链式栈 三、栈的应用 总结 前言 栈#xff08;Stack#xff09;是一种常见且重要的数据结构#xff0c;它遵循… 目录 前言 一、栈的概念 1、栈的基本定义  2、栈的特性 二、栈的基本操作 1.相关操作概念 2.实现方式 1顺序栈 2链式栈 三、栈的应用 总结 前言 栈Stack是一种常见且重要的数据结构它遵循后进先出Last-In-First-Out, LIFO的原则即最后加入的元素会是第一个被移除的。 由于栈是一种特殊的线性表其实现方式主要有两种 1、用顺序表实现顺序表内容可参考 数据结构——顺序表 2、用链表实现单向链表内容可参考 数据结构——单向链表 一、栈的概念 1、栈的基本定义 栈是一种线性表俗称堆栈它限制只能在一端称为栈顶进行插入和删除操作另一端称为栈底是固定的不允许进行插入和删除操作栈具有记忆作用对栈的插入与删除操作中不需要改变栈底指针当栈中没有元素时称为“空栈”。最大特点 后进先出LIFO 就如同往箱子里面放置书本一本一本地放在里面但是你想拿出来的时候只能从表面一本一本地往下取不可能从底部开始取书一个道理。 2、栈的特性 1、后进先出栈中最后一个插入的元素首先被删除。 2、栈顶浮动栈底固定栈顶的位置随着元素的入栈和出栈而变化而栈底则保持不变。 3、不支持随机访问栈的结构决定了只能在栈顶进行插入和删除操作无法直接访问和修改栈中间的元素。 二、栈的基本操作 1.相关操作概念 1、入栈Push将一个元素添加到栈顶使其成为新的栈顶元素。入栈操作需要将元素放到栈顶位置并更新栈顶指针。 2、出栈Pop将栈顶元素删除并返回该元素的值。出栈操作需要将栈顶元素删除并更新栈顶指针。 3、判空Empty判断栈是否为空即栈中是否没有任何元素。 4、获取栈顶元素Top获取栈顶元素的值但不删除该元素。 5、销毁栈DestroyStack销毁栈并释放栈占用的存储空间。 等待 2.实现方式 1顺序栈 采用顺序存储的栈称为顺序栈它利用一组地址连续的存储单元存放自栈底到栈顶的数据元素同时附设一个指针top指示当前栈顶元素的位置。 先创建顺序表 #include stdio.h #include stdlib.h #include string.htypedef int data_t; typedef struct {data_t *data;//栈数据指针int maxlen;//栈空间即数据数组最大长度int top;//栈顶指针 }sqstack;//创建顺序表需要传入顺序表数据长度 //同时初始化栈空间 sqstack * stack_create(int len) {sqstack * s;if ((s (sqstack *)malloc(sizeof(sqstack))) NULL) {printf(malloc sqstack failed\n);return NULL;}if ((s-data (data_t *)malloc(len * sizeof(data_t)))NULL) {printf(malloc data failed\n);free(s);return NULL;}memset(s-data, 0, len*sizeof(data_t));s-maxlen len;s-top -1;return s; } 顺序表实现各种操作 //压栈即入栈 int sqtack_pusqh(sqqsqtack * sq, data_t data) {if (sq NULL) {printf(sq isq NULL\n);return -1;}if (sq-top sq-maxlen-1) {printf(sqtack isq full\n);return -1;}sq-top;sq-data[sq-top] data;return 0; }//栈是否为空1为空 int sqtack_empty(sqqsqtack *sq) {if (sq NULL) {printf(sq isq NULL\n);return -1;}return (sq-top -1 ? 1 : 0); }//栈是否已满1为满状态 int sqtack_full(sqqsqtack *sq) {if (sq NULL) {printf(sq isq NULL\n);return -1;}return (sq-top sq-maxlen-1 ? 1 : 0); } //出栈 data_t sqtack_pop(sqqsqtack *sq) {if(sqtack_empty(*sq)) // 栈空无法出栈 { printf(Stack is empty!\n); return -1; } sq-top--;return (sq-data[sq-top1]); } //获取栈顶数据 data_t sqtack_top(sqqsqtack *sq) {return (sq-data[sq-top]); } //清除栈空间 int sqtack_clear(sqqsqtack *sq) {if (sq NULL) {printf(sq isq NULL\n);return -1;}sq-top -1;return 0; } //栈空间释放 int sqtack_free(sqqsqtack *sq) {if (sq NULL) {printf(sq isq NULL\n);return -1;}if (sq-data ! NULL) free(sq-data);free(sq);return 0; } 2链式栈 采用链式存储的栈称为链栈链栈的优点是便于多个栈共享存储空间和提高其效率且不存在栈满上溢的情况。链栈通常采用单链表实现并规定所有操作都是在单链表的表头进行的。 插入操作和删除操作均在链表头部进行链表尾部就是栈底栈顶指针就是头指针。 先创建单向链表 #include stdio.h #include stdlib.htypedef int data_t; typedef struct node {data_t data;struct node *next; }listnode, *linkstack;//创建单向链表并初始化栈空间 linksqtack sqtack_create(void) {linksqtack sq;sq (linksqtack)malloc(sqizeof(lisqtnode));if (sq NULL) {printf(malloc failed\n);return NULL;}sq-data 0;sq-next NULL;return sq; } 链表实现各种操作 //压栈也即入栈 int sqtack_pusqh(linksqtack sq, data_t data) {linksqtack p;if (sq NULL) {printf(sq isq NULL\n);return -1;}p (linksqtack)malloc(sqizeof(lisqtnode));if (p NULL) {printf(malloc failed\n);return -1;}p-data data;//p-next NULL;p-next sq-next;sq-next p;return 0; } //出栈 data_t sqtack_pop(linksqtack sq) {linksqtack p;data_t t;p sq-next;sq-next p-next;t p-data;free(p);p NULL;return t; } //判空 int sqtack_empty(linksqtack sq) {if (sq NULL) {printf(sq isq NULL\n);return -1;}return (sq-next NULL ? 1 : 0); } //获取栈顶数据 data_t sqtack_top(linksqtack sq) {return (sq-next-data); } //释放栈空间 linksqtack sqtack_free(linksqtack sq) {linksqtack p;if (sq NULL) {printf(sq isq NULL\n);return NULL;}while (sq ! NULL) {p sq;sq sq-next;printf(free:%d\n, p-data);free(p);}return NULL; } 三、栈的基本应用 1、函数调用栈在程序中函数的调用和返回过程可以通过栈来管理。每当一个函数被调用时相关的信息如参数、局部变量等被压入栈中当函数返回时这些信息会被弹出栈。         2、表达式求值栈可以用于处理表达式的求值过程特别是中缀表达式转换为后缀表达式的过程。通过栈的先进后出特性可以方便地进行运算符的优先级判断和操作符的计算。         3、括号匹配栈可以用于检查括号是否匹配。遍历字符串中的括号当遇到左括号时将其压入栈中当遇到右括号时弹出栈顶元素并检查是否与当前右括号相匹配。         4、编辑器的撤销操作在文本编辑器或图形编辑器中撤销操作可以通过栈来实现。每次进行操作时将操作的状态保存到栈中当需要撤销时从栈中弹出最近的状态恢复到之前的状态。         5、浏览器的前进后退功能浏览器的前进和后退功能可以通过两个栈来实现。一个栈用来保存浏览过的网页另一个栈用来保存后退的网页。 。。。。。。 完结 有误之处望指正
http://www.hkea.cn/news/14373546/

相关文章:

  • 黑龙江建设部网站中国互联网协会成立
  • 做博客网站宁波网站建设免费咨询
  • 上海商业连锁设计搜索引擎优化策略
  • 湖南3合1网站建设做网站必备
  • 有没得办法可以查询一个网站有没得做竞价呀重庆网站建设 快速建站
  • 常熟做网站多少钱按成都网络推广培训哪家好
  • 出售源码的网站制作网站需要什么语言
  • 出口网站制作深圳市光明区住房和建设局
  • 全国哪个餐饮品牌的网站做的好静态页面生成系统
  • python3 网站开发门户网站和社交网络的区别
  • 传媒网站建设游戏网页设计作品欣赏
  • 可信赖的做网站适合个人外贸平台
  • 好的 做网站的软件公司电商网站开发难点
  • 福州市工程建设质量管理协会网站桐庐县住房和城乡建设局网站
  • 门户网站建设和检务公开整改荆门刚刚发布的
  • 爬虫网站开发公司在东莞建设网登记要多少钱
  • 成都建设网站那家好适合网站开发工程师的公司
  • 手机影视网站制作免备案建网站
  • 上海网站seo公司企业网站模块
  • 做 爱 网站视频短片三合一网站开发架构
  • 怎么给做的网站做百度搜索wordpress建站 百度网盘
  • 杭州网站建设索q479185700如何建设商城网站
  • 建设一个网站的硬件要求客户管理软件免费
  • 重庆网站建设培训机构学费网建类公司
  • 金华网站制作费用动态手机网站怎么做
  • 怎么在搜狐快站上做网站网站建设的规划方案
  • 网站开发及服务器总共多少钱湛江网站建设团队
  • 设计网页心得体会廊坊seo网络推广
  • 软件开发和网站建设那个好企业网站的建立
  • 佛山狮山网站建设黑龙江省