c#如何实现栈的压入、弹出序列
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关c#如何实现栈的压入、弹出序列,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序
千家信息网最后更新 2026年11月03日c#如何实现栈的压入、弹出序列
这篇文章将为大家详细讲解有关c#如何实现栈的压入、弹出序列,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈顺序,序列4、5、3、2、1是该压栈序列对应的一个弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列。
首先,可以在第一个序列也就是压栈顺序中找第二个序列中第一个元素,是4,因为第二个序列中第一个元素是第一个被弹出的,那么在压入顺序中,被弹出数据之前的所有数据都被压入了栈中且还没有被弹出,也就是连续压进去了1、2、3、4,然后弹出第一个数据4;之后在第二个序列中往后的元素,是5,如果不是栈顶元素就在第一个序列中从4开始往后找继续压入再弹出,再次往后取第二个序列中的元素,如果是栈顶元素就弹出,直到栈空且两个序列都遍历一遍为止,否则,如果栈不为空且两个序列都遍历过了,则说明第二个序列不是压栈序列的弹出序列。
程序设计如下:
#include#include #include using namespace std;bool IsPopSeq(int *push_arr, int *pop_arr, size_t size){ assert(push_arr && pop_arr && size);//判断参数的有效性 stack s; size_t push_index = 0; size_t pop_index = 0; while(pop_index < size) { //将输入队列中处于输出队列第一个元素之前的所有元素都压入栈内 while(push_index < size) { s.push(push_arr[push_index]); ++push_index; if(s.top() == pop_arr[pop_index]) break; } //判断,如果输入队列全部压完了但仍然没有找到输出队列的的第一个元素,就返回false if((!s.empty()) && (s.top() != pop_arr[pop_index])) return false; //当栈中的元素恰好就是输出队列的弹出顺序时就不断的弹出 while((!s.empty()) && (pop_arr[pop_index] == s.top())) { s.pop(); ++pop_index; } } //正确返回的条件就是当输入队列和输出队列都遍历完毕且栈为空时判断完成 if((push_index == size) && (pop_index == size) && s.empty()) return true; else return false;}int main(){ int push_arr[] = {1, 2, 3, 4, 5}; int pop_arr1[] = {4, 5, 3, 2, 1}; int pop_arr2[] = {4, 3, 5, 1, 2}; int pop_arr3[] = {2, 5, 3, 4, 1}; size_t size = sizeof(push_arr)/sizeof(push_arr[0]); bool ret = IsPopSeq(push_arr, pop_arr1, size); cout< 运行程序:
从上面的数组可以判断结果分别为true,false,false。
《完》
关于"c#如何实现栈的压入、弹出序列"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
序列
元素
队列
顺序
输入
输出
两个
数据
篇文章
c#
也就是
就是
更多
程序
不错
实用
有效
不断
内容
再次
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网与科技
互联网科技巨头监管
西安互联网科技
奇酷互联网科技
艾特科技互联网
腾讯科技 互联网女皇
猫创互联网科技
重庆科技学院互联网
速维有品互联网信息科技(苏州)有限公司
国大互联网教育科技有限公司工作
互联网科技大赛获奖感言
互联网第三次科技革命特征
互联网营销推广黑科技
江苏互联网智能科技软件
领航科技大厦互联网公司
南京一网一红互联网科技有限公司
广州三三互联网科技有限公司
马化腾互联网科技教学
安徽零酒互联网科技有限公司
互联网科技的前景
互联网科技图片
南京欣网互联网络科技有限公司
智能科技公司是互联网公司吗
西安互联网科技
互联网科技缩写
亿账通互联网科技
互联网科技大会案例
佛山市拉法互联网科技有限公司
世界互联网领先科技成果获奖
互联网时代科技型公司的机会
