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

一个空间做两个网站的视频教程家居商城网站模板

一个空间做两个网站的视频教程,家居商城网站模板,seo分析seo诊断,朔州网站建设价格低目录 前言 一、栈的概念 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.w-s-a.com/news/272064/

相关文章:

  • 福州seo网站推广优化乐清建网站
  • 莆田cms建站模板简述网站设计流程
  • 班级网站建设组织机构建设注册中心网站首页
  • 即墨网站建设地址怎么在文档中做网站一点就开
  • 做网站联系方式互联网行业分析
  • 杭州网站建设索q479185700高淳网站建设
  • 有什么做任务拿钱的网站精准的搜索引擎优化
  • 洛阳有建社网站的吗电力建设工程质量监督总网站
  • 网站404报错热水器网站建设 中企动力
  • 网站降权恢复淘宝 网站建设
  • 安州区建设局网站台州优秀关键词优化
  • 网站假设教程湖南微信管理系统
  • 网站备案属于公司哪一块哪个网站是专门做封面素材
  • 广州个人做网站内江建设局网站
  • 网站开发 360百科大连哪里有手机自适应网站建设维护
  • 如何查网站pv网站功防教程
  • 建设银行网站信息补充营销推广的作用
  • 网站见建设seo外链自动群发工具
  • 在境外做网站网站团购网站seo
  • 进网站后台加什么360推广 网站建设
  • 网站备案号码专做网站漏扫的工具
  • 罗店网站建设wordpress响应式
  • 网站怎么制作小程序wordpress实时获取qq资料
  • 网站的流量怎么赚钱经销做网站都有什么好处
  • 如何做好网站首页企术建站
  • 杭州网站建设咨询蓝韵网络聊城有制作网站的吗
  • 网站开发注意的事项深圳企业网站
  • 哈尔滨网站制作哪里专业网站建设维护有哪些内容
  • 花的网站建设规划书网络营销培训
  • 又拍云wordpress全站cdn无锡做网站品牌公司