1000.Stack Implementation
時間限制:1秒 記憶體限制:256兆
題目描述
Implement the following Stack:
typedef int Stack_entry;
class Stack {
public:
// Standard Stack methods
Stack();
bool empty() const;
void push(const Stack_entry &item);
void pop();
const Stack_entry & top() const;
// Safety features
~Stack();
Stack(const Stack &original);
void operator =(const Stack &original);
};
typedef Stack MyStack;
//or if your are using templates
typedef Stack MyStack;
提示
Submit your implementations only.
本題有意思的點:
-
拷貝構造函數和指派運算符
拷貝構造函數與指派運算符重載函數
1.自定義拷貝構造函數是一種良好的程式設計風格,它可以阻止編譯器形成預設的拷貝構造函數,防止出錯。
2.一般來說,如果類需要複制構造函數,也就需要指派操作符。
我的代碼>>>
// EE_While Sicily
// E-mail:[email protected]
// SUN YAT-SEN UNIVERSITY 17 SDCS
// A master also used to be a novice.
typedef int Stack_entry;
class Stack {
public:
Stack_entry str[100];// 定義棧的容量
int pos;//目前表達式位置 或 棧内元素數量
Stack() {
pos = 0;//空棧
}
bool empty() const {
return pos == 0;//如果棧空,傳回true,否則傳回false
}
int size() const {
return pos;//傳回棧内元素數量
}
void push(const Stack_entry &item) {
str[pos++] = item;//元素入棧
}
void pop() {
if (pos == 0) return;//若棧為空,無操作
pos--;//元素出棧
}
Stack_entry top() const {
if (pos == 0) return -1;//若棧為空,無操作
return str[pos - 1];// 擷取棧頂元素
}
~Stack() {}//析構函數
Stack(const Stack & original) {//拷貝構造函數
for (int i = 0; i < original.pos; i++) {
str[i] = original.str[i];
}
pos = original.pos;
}
void operator = (const Stack & original) {//指派運算符重載
*this = original;
}
};
typedef Stack MyStack;
from:EE_While
Email:[email protected]