UNFINISHED
This commit is contained in:
47
Stack/arrayStack/arraystack.h
Normal file
47
Stack/arrayStack/arraystack.h
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "stack.h"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
class arrayStack : public Stack<T> {
|
||||||
|
private:
|
||||||
|
T* stack;
|
||||||
|
int stackTop;
|
||||||
|
int length;
|
||||||
|
public:
|
||||||
|
arrayStack(int initialCapacity = 10);
|
||||||
|
virtual ~Stack() { delete[] stack; }
|
||||||
|
|
||||||
|
virtual bool empty() const override { return stackTop == -1; }
|
||||||
|
virtual int size() const override { return stackTop + 1; }
|
||||||
|
virtual T& top() override;
|
||||||
|
virtual void pop() override;
|
||||||
|
virtual void push(const T& theElement) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
arrayStack<T>::arrayStack(int initialCapacity) {
|
||||||
|
length = initialCapacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
T& arrayStack<T>::top() {
|
||||||
|
if (stackTop == -1) throw std::invalid_argument("No Element in Stack");
|
||||||
|
return stack[stackTop];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void arrayStack<T>::pop() {
|
||||||
|
if (stackTop == -1) throw std::invalid_argument("Empty Stack");
|
||||||
|
if constexpr (!std::is_trivially_destructible<T>::value) {
|
||||||
|
stack[stackTop].~T(); // ֻ<><D6BB><EFBFBD><EFBFBD> T <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>
|
||||||
|
}
|
||||||
|
stackTop--;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void arrayStack<T>::push(const T& theElement) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
12
Stack/arrayStack/stack.h
Normal file
12
Stack/arrayStack/stack.h
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
class Stack {
|
||||||
|
public:
|
||||||
|
virtual ~Stack();
|
||||||
|
virtual bool empty() const = 0;
|
||||||
|
virtual int size() const = 0;
|
||||||
|
virtual T& top() = 0;
|
||||||
|
virtual void pop() = 0;
|
||||||
|
virtual void push(const T& theElement) = 0;
|
||||||
|
};
|
Reference in New Issue
Block a user