一道问题,求教大家!急求!!!

jerry4711 2010-02-23 03:13:45
题目的要求是这样的:

Stack():默认构造函数
Stack(int):设置stack size
~Stack(): deconstructor
value_type pop(): Pop topmost element. On overflow, return INVALID_OPERATION
void push(value_type):Push new element.On overflow,silently ignore the operation.On overflow, size() must never exceed capacity().
int size(): Return number of current elements
int capacity():Return currently allocated size.
bool full(): Return true if full.
bool empty(): Return true if empty
value_type peek(): Return topmost element,leaving the element in-place.Note: you MUST implement this in terms of pop() and push() only. This means, for peek(), you may not directly access your internal array.
main()函数不要改
自己写Stack.h和Stack.cpp

想的头大,Stack里的int怎么重定义,因为在main()里,Stack::int val;这里int应该怎么理解?如何让Stack有int这个类型?
#include <iostream>
#include "assert.h"
#include "new.h"
#include "stdlib.h"
#include "Stack.h"
using namespace std;
main()
{
Stack::int val;
Stack s1;
// TEST 1
cout << "1: size = " << s1.size()
<< ", capacity = " << s1.capacity() << endl;
// TEST 2
Stack s2(20);
cout << "2: size = " << s2.size()
<< ", capacity = " << s2.capacity() << endl;
// TEST 3
if(!s1.empty() || !s2.empty() || s1.size() != 0 || s2.size())
cout << "3: Logic error" << endl;
// TEST 4
// Intentional overflow
for(Stack::int i = 0; i < Stack::DEF_CAPACITY + 1; i++ )
s1.push(i);
if(!s1.full() || s1.size() != Stack::DEF_CAPACITY)
cout << "4: Logic error" << endl;
// TEST 5
for(Stack::int i = 0; i < 20; i++ )
s2.push(i);
if(!s2.full() || s2.size() != 20)
cout << "5: Logic error" << endl;
// TEST 6
for(int i = Stack::DEF_CAPACITY - 1; i >= 0; i--) {
val = s1.pop();
if(val != i) {
cout << "6: Logic error i = " << i
<< ", val = " << val << endl;
}
}
// TEST 7
val = s1.pop();
if(val != Stack::INVALID_OPERATION || s1.size() != 0)
cout << "7: Logic error" << endl;
// TEST 8
val = s2.pop();
if(val != 19 || s2.size() != 19)
cout << "8: Logic error" << endl;
// TEST 9
val = s2.peek();
if(val != 18 || s2.size() != 19)
cout << "9: Logic error" << endl;
// TEST 10
val = s1.peek();
if(val != Stack::INVALID_OPERATION)
cout << "10: Logic error" << endl;
return 0;
}
...全文
382 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
jerry4711 2010-02-24
  • 打赏
  • 举报
回复
再过来看看!!!

此问题甚是奇怪,求解!!!
shawn 2010-02-24
  • 打赏
  • 举报
回复
确实没见过这个问题。。。
xiedi1209 2010-02-24
  • 打赏
  • 举报
回复
看的头大…… 希望lz找到满意的答案
jerry4711 2010-02-24
  • 打赏
  • 举报
回复
目前还是无解,求点拨!!!

实在不行只好结贴了
太乙 2010-02-24
  • 打赏
  • 举报
回复
引用 18 楼 lddys 的回复:
怎么会是笔误呢????不太理解
int是关键字.....
r11222 2010-02-23
  • 打赏
  • 举报
回复
mark!!!!!!!!!!!!!!
dskit 2010-02-23
  • 打赏
  • 举报
回复
lddys 2010-02-23
  • 打赏
  • 举报
回复
怎么会是笔误呢????不太理解
macrojj 2010-02-23
  • 打赏
  • 举报
回复
高手说是笔误~~~~~~~
wzyzb 2010-02-23
  • 打赏
  • 举报
回复
yshuise 2010-02-23
  • 打赏
  • 举报
回复
class mystack : private stack<int>
{
public:
typedef stack<int> S;
void push(int vaule){ S::push(vaule);}
void pop(){S::pop();}
int top(){return S::top();}
.........
};
jerry4711 2010-02-23
  • 打赏
  • 举报
回复
自己再顶顶!!

请大家不吝赐教!
小麻侬 2010-02-23
  • 打赏
  • 举报
回复
up, 第一次看到stack::int val这种写法
jerry4711 2010-02-23
  • 打赏
  • 举报
回复
引用 10 楼 thefirstz 的回复:
引用 9 楼 jerry4711 的回复:引用 6 楼 thefirstz 的回复:这个main函数是你自己写的还是已经定义好的? main()函数是给定的,不允许修改。所以才想的头大, 谢谢啦!
不好意思,我对你问题的理解可能有点偏差
如果main函数给定且没有错的话,我也不知道该怎么改
等待高手吧
也可以参考下独行的答案


多谢多谢!
jerry4711 2010-02-23
  • 打赏
  • 举报
回复
引用 7 楼 hqin6 的回复:
C/C++ code

#include<iostream>usingnamespace std;class Stack
{public:
typedefint value_type;int mi;
};int main()
{
Stack::value_type i;

}


按照我的理解:

main函数中有:
Stack::int v?-


这个分析的在理,不过题目是这样,很怪的题
昵称很不好取 2010-02-23
  • 打赏
  • 举报
回复
引用 9 楼 jerry4711 的回复:
引用 6 楼 thefirstz 的回复:这个main函数是你自己写的还是已经定义好的?

main()函数是给定的,不允许修改。所以才想的头大,

谢谢啦!

不好意思,我对你问题的理解可能有点偏差
如果main函数给定且没有错的话,我也不知道该怎么改
等待高手吧
也可以参考下独行的答案
jerry4711 2010-02-23
  • 打赏
  • 举报
回复
引用 6 楼 thefirstz 的回复:
这个main函数是你自己写的还是已经定义好的?


main()函数是给定的,不允许修改。所以才想的头大,

谢谢啦!
昵称很不好取 2010-02-23
  • 打赏
  • 举报
回复
引用 7 楼 hqin6 的回复:
C/C++ code

#include<iostream>usingnamespace std;class Stack
{public:
typedefint value_type;int mi;
};int main()
{
Stack::value_type i;

}


按照我的理解:

main函数中有:
Stack::int v?-

up,那个还是独行分析的透彻
那个Stack::int val; 让我纳闷半天
太乙 2010-02-23
  • 打赏
  • 举报
回复


#include <iostream>
using namespace std;

class Stack
{
public:
typedef int value_type;
int mi;
};
int main()
{
Stack::value_type i;

}


按照我的理解:

main函数中有:
Stack::int val;

val = s2.pop();
val = s1.peek();
而pop和peek的返回值都是value_type

所以,可以推测val的类型也应该差不多或许maybe是value_type

结论:main函数中的Stack::int val;纯粹是笔误,应该是Stack::value_type



昵称很不好取 2010-02-23
  • 打赏
  • 举报
回复
这个main函数是你自己写的还是已经定义好的?
加载更多回复(5)

64,663

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧