当前位置: 首页 > 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/14524765/

相关文章:

  • 暖通设计网站推荐泉州茶叶网站建设
  • 建设网站上传软件wordpress免费主题推荐
  • 手机制作ppt百度搜索引擎优化
  • 安徽省建设厅焊工证查询网站网站建设 万网
  • 亚马逊网站网址是多少建设好网站怎么付费推广
  • 网站建设的常用技术有哪些做微信公众号页面的网站
  • 公司设计网站需要多久微信网站平台建设
  • 基于ASP与Access数据库的网站开发上海高端网站建设公
  • 订阅号做微网站宽屏网站设计
  • 企业网站改版升级叫别人做网站后怎么更改密码
  • 绥化建设局网站php做的网站
  • 粘贴以下代码到网站首页代码的与标签之间龙华营销型网站建设公司
  • 网站建设运营的灵魂是网站建立者
  • 小型购物网站开发费用广州搜狗快速排名原
  • 亚购物车功能网站怎么做的网站建设用什么网站好一点
  • 免费制作二维码网站dw做网站首页代码
  • 建设银行网站怎么打印明细厦门网站推广找谁
  • 中国建设教育协会网站培训中心吉林响应式网站建设
  • 深圳专业做网站排名多少钱海外代理服务器 免费
  • 烟台定制网站建设公司个人网页制作成品图
  • 建站系统网站建设广东营销网站建设
  • 做外贸的网站平台有哪些内容商业网站的建设
  • 建设网站网站建设公司自建营销型企业网站
  • 崂山区建设局网站句容网站
  • 健身俱乐部网站建设方案设计物流网站建设流程图
  • 西宁网站运营公司电子商务网站开发与管理
  • 江东外贸seo网站建设wordpress安装后怎么修改主题
  • wordpress商品宣传网络推广优化是干啥的
  • 哪个网站有介绍拿到家做的手工活青海做网站
  • 深圳做网站网络公司怎么样网站栏目名称大全