博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程之美--3.7
阅读量:4911 次
发布时间:2019-06-11

本文共 1806 字,大约阅读时间需要 6 分钟。

题目描述:实现一个队列,要求有MAX操作,且越快越好。

思路:这道题其实就是之前碰到的,两个栈实现一个队列+min栈,变形题目,当然可以使用类似于min栈的实现()来实现一个max栈了,

这里提供一个书上的另外的一个实现max栈的思路,其实就是通过额外的空间来完成,对于重复元素也可以处理好的。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 using namespace std; 15 16 template
17 class maxstack 18 { 19 T stackItem[100]; 20 int stackTop; 21 int link2NextMaxItem[100]; 22 int maxStackItemIndex; 23 public: 24 maxstack() 25 { 26 stackTop = -1; 27 maxStackItemIndex = -1; 28 } 29 void push(T x) 30 { 31 stackTop++; 32 if(stackTop >= 100) 33 { 34 throw std::out_of_range("full"); 35 } 36 stackItem[stackTop] = x; 37 if(x >= Max()) 38 { 39 link2NextMaxItem[stackTop] = maxStackItemIndex; 40 maxStackItemIndex = stackTop; 41 } 42 else 43 link2NextMaxItem[stackTop] = -1; 44 } 45 T pop() 46 { 47 T ret; 48 if(stackTop < 0) 49 { 50 throw std::out_of_range("empty"); 51 } 52 ret = stackItem[stackTop]; 53 if(stackTop == maxStackItemIndex) 54 maxStackItemIndex = link2NextMaxItem[stackTop]; 55 stackTop--; 56 return ret; 57 } 58 T Max() 59 { 60 if(maxStackItemIndex >= 0) 61 return stackItem[maxStackItemIndex]; 62 else 63 return INT_MIN; 64 } 65 bool Empty() 66 { 67 if(stackTop < 0) 68 return true; 69 return false; 70 } 71 }; 72 73 template
74 class Queue 75 { 76 maxstack
A; 77 maxstack
B; 78 public: 79 void Enqueue(T elem) 80 { 81 A.push(elem); 82 } 83 T Dequeue() 84 { 85 if(B.Empty()) 86 { 87 while(!A.Empty()) 88 { 89 B.push(A.pop()); 90 } 91 } 92 return B.pop(); 93 } 94 T Max() 95 { 96 return max(A.Max(),B.Max()); 97 } 98 }; 99 100 int main()101 {102 103 return 0;104 }

 

转载于:https://www.cnblogs.com/cane/p/3796385.html

你可能感兴趣的文章
凸包模板——Graham扫描法
查看>>
api无限拓展的想像世界
查看>>
hdu 2215 Maple trees
查看>>
【手记】WebBrowser响应页面中的blank开新窗口及window.close关闭本窗体
查看>>
一套Tomcat处理多个域名请求 - Virtual Host
查看>>
[ubuntu] 外挂硬盘
查看>>
CommonJS是如何提高javascript的生产力的
查看>>
在 Windows 上安装 Hadoop 教程(转)
查看>>
PHP数组函数(4)
查看>>
js获取一个对象的所以属性和值
查看>>
XML解析之SAX详解
查看>>
leetcode 338. Counting Bits
查看>>
NUMBER类型细讲
查看>>
koa2-3
查看>>
MySQL慢查询日志总结
查看>>
ipad常见错误
查看>>
时钟效果
查看>>
Linux下安装与配置Nginx
查看>>
FCC 基础JavaScript 练习7
查看>>
真的要听妈妈的话。
查看>>