UNFINISHED

This commit is contained in:
e2hang
2025-07-21 00:25:13 +08:00
parent 223d18a255
commit 45febe3813
2 changed files with 59 additions and 0 deletions

View 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
View 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;
};