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

网站做细分领域淄博三合一网站开发

网站做细分领域,淄博三合一网站开发,网站建设互联,厦门专业网站建设目录 栈的概念及结构 栈的实现 创建栈 栈的初始化 入栈 出栈 取出栈顶数据 判断栈是否为空 有效数据个数 栈的销毁 全代码 stack.h stack.c 应用 题目 示例 解题思路 代码实现 栈的概念及结构 栈是一种特殊的线性表#xff0c;其只允许在固定的一端进行插入…目录 栈的概念及结构 栈的实现 创建栈 栈的初始化 入栈 出栈 取出栈顶数据 判断栈是否为空 有效数据个数 栈的销毁 全代码 stack.h stack.c 应用 题目 示例 解题思路 代码实现 栈的概念及结构 栈是一种特殊的线性表其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。你也可以一边入一边出。 栈顶和栈底并不是固定的这是人为决定的。 栈的实现 栈的实现一般可以使用数组或者链表实现相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。 以下的内容如果你对顺序表的实现熟悉的话就很简单。 创建栈 栈的创建需要有指向动态数组指针栈顶数据下标和容量。 typedef int STDataType;typedef struct Stack {STDataType* arr;//指向动态数组指针int top;//栈顶数据下标int capacity;//容量 }ST;栈的初始化 将arr置为空指针top置为-1capacity置为0。 //初始化 void STInit(ST* pst) {assert(pst);pst-arr NULL;pst-top -1;pst-capacity 0; } 这里的top为什么要是-1呢      一般来说top应该也是0这里是-1是为了确保top是栈顶数据的下标。当然了你要是想写0也是可以的。 入栈 入栈又称压栈进栈。 首先要判断容量是否够用如果不够用的话就扩容。然后再把数据塞入即可。 //入栈 void STPush(ST* pst, STDataType x) {assert(pst);if (pst-top 1 pst-capacity){pst-capacity pst-capacity 0 ? 4 : pst-capacity * 2;STDataType* p (STDataType*)realloc(pst-arr, sizeof(STDataType) * pst-capacity);if (p NULL){perror(realloc);return;}pst-arr p;}pst-arr[pst-top] x; } 注意这里要前置如果后置就会造成非法访问。如果top是0就要后置了。 出栈 这里要另外判断一下栈是否为空。然后只要让top--即可。 //出栈 void STPop(ST* pst) {assert(pst);assert(pst-top -1);pst-top--; } 取出栈顶数据 这里也要判断一下栈是否为空。然后返回下标top对应的数据即可。 //取出出栈顶数据 STDataType STTop(ST* pst) {assert(pst);assert(pst-top -1);return pst-arr[pst-top]; } 判断栈是否为空 直接返回pst-top-1即可。 //判断栈是否为空 bool STEmpty(ST* pst) {assert(pst);return pst-top -1; } 该函数类型要是布尔类型。      如果top-1则返回true否则返回false。 有效数据个数 直接返回top1即可。 //有效数据个数 int STSize(ST* pst) {assert(pst);return pst-top 1; } 栈的销毁 用free销毁arr并将它置为空指针。其它的置为初始化值即可。 //销毁 void STDestroy(ST* pst) {assert(pst);free(pst-arr);pst-arr NULL;pst-top -1;pst-capacity 0; } 全代码 stack.h #include stdio.h #include stdlib.h #include stdbool.h #include assert.htypedef int STDataType;typedef struct Stack {STDataType* arr;int top;int capacity; }ST;//初始化 void STInit(ST* pst);//销毁 void STDestroy(ST* pst);//入栈 void STPush(ST* pst, STDataType x);//出栈 void STPop(ST* pst);//取出出栈顶数据 STDataType STTop(ST* pst);//判空 bool STEmpty(ST* pst);//获取数据个数 int STSize(ST* pst); stack.c #include stack.h//初始化 void STInit(ST* pst) {assert(pst);pst-arr NULL;pst-top -1;pst-capacity 0; }//入栈 void STPush(ST* pst, STDataType x) {assert(pst);if (pst-top 1 pst-capacity){pst-capacity pst-capacity 0 ? 4 : pst-capacity * 2;STDataType* p (STDataType*)realloc(pst-arr, sizeof(STDataType) * pst-capacity);if (p NULL){perror(realloc);return;}pst-arr p;}pst-arr[pst-top] x; }//出栈 void STPop(ST* pst) {assert(pst);assert(pst-top -1);pst-top--; }//取出栈顶数据 STDataType STTop(ST* pst) {assert(pst);assert(pst-top -1);return pst-arr[pst-top]; }//判断栈是否为空 bool STEmpty(ST* pst) {assert(pst);return pst-top -1; }//有效数据个数 int STSize(ST* pst) {assert(pst);return pst-top 1; }//销毁 void STDestroy(ST* pst) {assert(pst);free(pst-arr);pst-arr NULL;pst-top -1;pst-capacity 0; } 应用 题目 该题链接 https://leetcode.cn/problems/valid-parentheses/description/ 示例 解题思路 这题根据栈的后进先出和边入边出的特性可以解决。 创建一个栈只让左括号入栈让右括号与栈里的数据匹配。如果匹配成功让左括号出栈继续该操作直至字符串遍历完。如果匹配不成功则直接退出。 有几个要注意的点 字符串只有右括号字符串只有左括号或只剩左或右括号arr是int的类型要把它改成char类型 代码实现 bool isValid(char* s) {ST st;STInit(st);while(*s){if(*s ( || *s [ || *s {){STPush(st, *s);}else{if(st.top -1)//字符串只有右括号{STDestroy(st);return false;}STDataType top STTop(st);if(*s ) top ! ( || *s ] top ! [ || *s } top ! {){STDestroy(st);return false;}STPop(st);}s;}bool ret STEmpty(st);//字符串只有左括号或只剩左或右括号STDestroy(st);return ret; }
http://www.sczhlp.com/news/196002/

相关文章:

  • 精确率
  • “[GESP202509 五级] 有趣的数字和”分块做法
  • 网站开发师是属于IT主体职业太原网页设计公司是销售吗
  • 域名备案网站名称个人备案可以做影视网站吗
  • 胶南网站建设小红书小程序入口
  • 开一个网站建设公司好wordpress 没有保存
  • 肥城做网站青岛+网站建设
  • 淘宝客手机网站开发dw如何制作一个搜索栏
  • 钦州做网站vip解析网站怎么做
  • 高端网站建设企业网站建站咨询管理
  • 哪些网站能够免费做公考题网站建设中如何使用字体
  • 网站必须要求备案吗现在的网站使用frameset做吗
  • 网站硬件防火墙丹阳seo公司
  • 秦皇岛做网站哪家好佛山电子商务网站建设
  • 奉化建设网站域名购买平台有哪些
  • 如何在年报网站上做遗失公告做citation的网站
  • 怎么为网站做外链网站建设的考虑
  • 网站外包 博客美食网站建设合同范例
  • 自建网站做网上超市可行吗做网络销售感觉自己是骗子
  • 简述网站制作的过程阿里云wordpress 备份数据
  • 那个网站做直播好永兴县网站建设哪个好
  • 学校网站建设教程合肥网络关键词排名
  • 网站上展示手机页面是怎么做的公司做网站域名的好处
  • 店铺推广和网站优化一起做wordpress用户搜索次数
  • 做网站广告语买做指甲的材料在哪个网站
  • 建设网站什么软件比较好wordpress模板恢复
  • 网站建设概括找个网页公司做网站
  • 各行业网站建设方案书营业执照注册
  • 做外汇应该看哪一家网站成都大型商城网站建设
  • FBAM 论文浅析