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

专业移动微网站设计pinterest设计网

专业移动微网站设计,pinterest设计网,软文推广的好处,域名购买后网站搭建目录 前言 一、栈的概念 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/14421832/

相关文章:

  • 网站建设的行业资讯_无法登陆建设银行网站
  • 河源市网站建设群晖wordpress搭建网站
  • 百度搜索网站排名电影网站设计说明书
  • 宁波网站建设哪家比较好佛山公司注册地址
  • 西安做网站app公司网站改版要怎么做
  • 做网站时怎样申请域名网络营销专业大学
  • 如何让网站免费杭州如何设计公司网站
  • 网站横幅代码微信小程序开发步骤图
  • 广东省建设工程金匠奖公布网站网页设计与制作简历
  • 南通网站设计制作门户型网站模板
  • 杭州网站建设报价网站中二级导航栏怎么做
  • 空壳网站免费微网站制作
  • 网站开发需要学习未注册网站
  • wordpress 网站教程wordpress注册确认信
  • 温州本地网站wordpress 如何汉化
  • 提升网站响应时间代运营竞价公司
  • 黄山找人做网站网站维护提示代码
  • 做那个的网站谁有网站付款方式
  • 网站建设推广软文案例注册网站给谁交钱
  • 网站建设期间注意事项投稿网站源码
  • 山西省煤炭厅基本建设局网站网站是com好点还是cn
  • 网站制作方案书北京空间优化平台
  • 做剧情网站侵权吗动态电子商务网站 制作
  • 手机网站制作代理商制作图片视频的软件有哪些
  • 外贸商城网站模板平面广告设计论文
  • 优是是什么网站上海做宴会的网站
  • 求网页设计与网站建设宝塔 伪静态 wordpress
  • 汕头招聘网官网seo是什么平台
  • 高校网站站群建设公司网站设计开发是啥
  • 旅游网站需求分析淘宝app免费下载安装