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

免费空间测试网站营销网站的建造步骤

免费空间测试网站,营销网站的建造步骤,营销型网站建设广告语,室内设计平面图上色文章目录 有效的括号题目链接题目描述解题思路代码 用队列实现栈题目链接题目描述解题思路代码 用栈实现队列题目链接题目描述解题思路代码 有效的括号 题目链接 题目链接 题目描述 解题思路 这道题需要借助栈,所以需要把我们以前实现的栈拷贝过来,具…

文章目录

  • 有效的括号
    • 题目链接
    • 题目描述
    • 解题思路
    • 代码
  • 用队列实现栈
    • 题目链接
    • 题目描述
    • 解题思路
    • 代码
  • 用栈实现队列
    • 题目链接
    • 题目描述
    • 解题思路
    • 代码


有效的括号

题目链接

题目链接

题目描述

在这里插入图片描述

解题思路

这道题需要借助栈,所以需要把我们以前实现的栈拷贝过来,具体思路就是遍历整个字符串,遇到左括号就把它入栈,遇到右括号就把右括号和栈顶括号匹配,若匹配成功就把栈顶字符出栈,若匹配不成功就返回false,若程序成功出循环就代表字符串的所有字符都匹配成功,返回true。这个思路整体没问题,但有几个小坑:
1、程序有一个分支结构,左括号和右括号分别进入不同的分支,若进入右括号分支且栈为空,就代表栈里没有字符能和右括号匹配,直接返回false。
2、若出循环后栈里还有字符,代表没有右括号与之匹配,也直接返回false。

代码

bool isValid(char* s) {ST st;STInit(&st);char* pos = s;while(*pos != '\0'){//左括号入栈if(*pos == '(' || *pos == '[' || *pos == '{'){STPush(&st,*pos);}else{//若为右括号且和栈顶不匹配或者栈为空return falseif(STEmpty(&st)){STDestroy(&st);return false;  }char top = STTop(&st);if((*pos == ')' && '(' != top)||(*pos == ']' && '[' != top)||(*pos == '}' && '{' != top)){STDestroy(&st);return false;  }STPop(&st);}pos++;}//若出循环栈不为空更该淘汰bool ret = STEmpty(&st) ? true : false;STDestroy(&st);return ret;
}

用队列实现栈

题目链接

题目链接

题目描述

在这里插入图片描述

解题思路

这道题需要借助两个栈实现应该队列,所以MyStack结构体里包含两个队列。
初步思路:
入栈要选择不为空队列插入,若两个队列都为空,随机挑选一个队列插入数据。出栈要将不为空队列的前size-1个数据导入到另一个空队列,在将不为空队列剩余的一个数据出队列。返回栈顶元素不用导数据,直接取不为空队列的队尾数据。
具体接口实现如下:
初始化栈: 该题需要自己开空间,然后返回指向该空间的指针,所以先开MyStack大小的空间,然后分别初始化两个队列。
入栈: 找到非空队列将数据插入队列,若两个队列都为空,则随机找一个队列插入。
出栈: 需要先找到空队列和非空队列,先将非空队列的前size-1个数据全部转移道空队列,然后将非空队列剩余的一个数据出队列,并将它的值返回。
取栈顶: 直接返回不为空队列的队尾数据。
判空: 若两个队列都为空则栈为空,否则栈不为空。
销毁: 不仅要释放两个队列,我们malloc的MyStack也要释放。

代码

typedef struct {Queue q1;Queue q2;
} MyStack;MyStack* myStackCreate() {//自己开空间MyStack* stp = (MyStack*)malloc(sizeof(MyStack));QueueInit(&stp->q1);QueueInit(&stp->q2);return stp;
}//往不为空的队列插入,若都为空则随机插入
void myStackPush(MyStack* obj, int x) 
{if(!QueueEmpty(&obj->q1)){QueuePush(&obj->q1, x);}else{QueuePush(&obj->q2, x);}
}int myStackPop(MyStack* obj) 
{//指鹿为马,判断队列空与非空Queue* emp = &obj->q1;Queue* noemp = &obj->q2;if(QueueEmpty(noemp)){emp = &obj->q2;noemp = &obj->q1;}//导数据while(QueueSize(noemp) > 1){QueuePush(emp, QueueFront(noemp));QueuePop(noemp);}//将非空队列的最后一个数据出队列并返回非空队列最后一个数据int tmp = QueueFront(noemp);QueuePop(noemp);return tmp;
}int myStackTop(MyStack* obj) {//返回不为空队列的队尾if(!QueueEmpty(&obj->q1)){return QueueBack(&obj->q1);}else{return QueueBack(&obj->q2);}
}bool myStackEmpty(MyStack* obj) {return QueueEmpty(&obj->q1)&&QueueEmpty(&obj->q2);
}void myStackFree(MyStack* obj) {QueueDestroy(&obj->q1);QueueDestroy(&obj->q2);free(obj);obj = NULL;
}

用栈实现队列

题目链接

题目链接

题目描述

在这里插入图片描述

解题思路

这道题两个栈分别承担不同的功能,一个pushst用来入数据,一个popst用来出数据,入数据时无需判断,直接pushst入栈就行了,出数据需要先判断popst是否为空,若不为空则popst出栈,若popst为空则需要先将pushst内所有数据导到popst,再将popst出栈,top思路和pop大致相同,只不过不用删除popst栈顶数据,其他接口和上一题类似,若读者感觉比较难想画一画图思路自然就有了。

代码

typedef struct {//入数据栈ST pushst;//出数据栈ST popst;
} MyQueue;MyQueue* myQueueCreate() {//自己开空间MyQueue* mqp= (MyQueue*)malloc(sizeof(MyQueue));STInit(&mqp->pushst);STInit(&mqp->popst);return mqp;
}void myQueuePush(MyQueue* obj, int x) {STPush(&obj->pushst, x);
}int myQueuePop(MyQueue* obj) {if(STEmpty(&obj->popst)){//若popst为空,将pushst数据全部导到popst后再出栈while(!STEmpty(&obj->pushst)){STPush(&obj->popst, STTop(&obj->pushst));STPop(&obj->pushst);}}//popst不为空,直接出栈int tmp = STTop(&obj->popst);STPop(&obj->popst);return tmp;
}int myQueuePeek(MyQueue* obj) {//若popst为空,将pushst数据全部导到popst后再返回popst栈顶数据if(STEmpty(&obj->popst)){while(!STEmpty(&obj->pushst)){int tmp = STTop(&obj->pushst);STPop(&obj->pushst);STPush(&obj->popst, tmp);}}//若popst不为空,直接返回栈顶数据return STTop(&obj->popst);
}bool myQueueEmpty(MyQueue* obj) {return STEmpty(&obj->popst) && STEmpty(&obj->pushst);
}void myQueueFree(MyQueue* obj) {STDestroy(&obj->popst);STDestroy(&obj->pushst);free(obj);obj = NULL;
}

以上就是小编分享的全部内容了,如果觉得不错还请留下免费的赞和收藏
如果有建议欢迎通过评论区或私信留言,感谢您的大力支持。
一键三连好运连连哦~~

在这里插入图片描述

http://www.dtcms.com/wzjs/357733.html

相关文章:

  • 洛阳做网站的公司seo做的比较好的公司
  • 广东网站建设费用如何打百度人工电话
  • 网站建设提成湖南优化公司
  • 玉林做网站优化推广seo搜索优化推广
  • 测网站打开的速度的网址如何在各大网站发布信息
  • 高校门户网站建设问题网站推广方式有哪些
  • 国家企业信用查询官网广州网站运营专业乐云seo
  • wordpress类开源网站定向推广
  • 龙岗附近做网站公司2024很有可能再次封城吗
  • 加盟型网站建设宁波seo软件
  • 青岛做模板网站的公司seo网站的优化方案
  • 上海企业名录大全黄页谷歌seo推广服务
  • 大连 做网站百度推广免费
  • 上海市城乡建设管理委员会网站优化关键词的方法包括
  • 填写网站备案信息深圳seo推广培训
  • 自己做公司的网站湖南seo网站开发
  • 做网站 推广聚合搜索引擎
  • 做php网站会员开店代码如何编写seo蜘蛛池
  • 寻找网络公司做公司网站升级改版宁波seo优化项目
  • 网站设计的工具南宁网站建设公司排行
  • 太平洋电脑网官方网站友情链接查询
  • 怎么做游戏网站的宣传图片网级移动营销app下载
  • 关于网站设计的价格关键字优化
  • 系统下载 网站 源码成都有实力的seo团队
  • 家居网站建设的需求分析域名收录批量查询
  • 兼职做海报网站关键词搜索方法
  • 做部队网站技术六年级下册数学优化设计答案
  • wordpress 在线知识库品牌关键词优化
  • 如何用模版做网站北京seo招聘
  • 网站建设学什么整合网络营销是什么