日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

基于java的数据结构学习——数组实现的栈以及简单应用C++实现

發布時間:2023/12/19 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于java的数据结构学习——数组实现的栈以及简单应用C++实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于java的數據結構學習——數組實現的棧以及簡單應用的 C++ 實現

源碼:

?

// // Created by PC-Saw on 2019/1/3. //#ifndef DATA_STRUCTURE_ARRAYSTACK_H #define DATA_STRUCTURE_ARRAYSTACK_H#include "Stack.h" #include "MyArray.h"template<typename T> class ArrayStack : public Stack<T> {private:MyArray<T>* array;public:ArrayStack(); // 無參構造ArrayStack(int capacity); // 有參構造~ArrayStack(); // 析構函數ArrayStack(const ArrayStack<T>& arr); // 拷貝構造ArrayStack<T> &operator= (const ArrayStack<T> arr); // 重載賦值操作符MyArray<T> &operator[](int index); // 重載[]操作賦//友元函數實現 重載輸出 << 操作符friend ostream & operator << (ostream &out, ArrayStack<T> &obj){out << "ArrayStack size = " << obj.getSize() << ", Capacity = " << obj.getCapacity() << endl;out << "ArrayStack: [";for (int i = 0; i < obj.getSize(); ++i){out << obj.array->get(i);if (i != obj.getSize() - 1)out << ", ";}out << "] Top";return out;}//友元函數實現 輸入 >> 操作符friend istream & operator >> (istream &in, ArrayStack<T> &obj){for (int i = 0; i < obj.getSize(); ++i) {in << obj.array[i];}if (!in){obj = new ArrayStack();}return in;}int getCapacity(); // 獲取棧容量int getSize(); // 獲取棧內元素個數bool isEmpty(); // 判斷棧空bool isFull(); // 判斷棧滿void push(T t); // 元素壓入棧T pop(); // 元素出棧T peek(); // 查看棧頂元素 };// 無參構造函數 template <typename T> ArrayStack<T>::ArrayStack(){cout << "調用 ArrayStack() 構造" << endl;array = new MyArray<T>(); }// 有參構造 template <typename T> ArrayStack<T>::ArrayStack(int capacity){cout << "調用 ArrayStack(int) 構造" << endl;array = new MyArray<T>(capacity); }// 析構函數 template <typename T> ArrayStack<T>::~ArrayStack(){cout << "調用析構函數" << endl;delete[] array;array = nullptr; }// 拷貝構造 template <typename T> ArrayStack<T>::ArrayStack(const ArrayStack<T>& arr){cout << "拷貝構造" << endl;array = new MyArray<T>(arr.getCapacity());array = arr; }// 重載賦值操作符 template <typename T> ArrayStack<T>& ArrayStack<T>::operator= (const ArrayStack<T> arr){cout << "調用 = 賦值操作" << endl;if (this->array != nullptr){delete[] this->array;this->array = nullptr;}this->array = new MyArray<T>(arr.getCapacity());for (int i = 0; i < arr.getSize(); ++i) {this->array[i] = arr[i];}return *this; }// 重載[]操作賦 template <typename T> MyArray<T>& ArrayStack<T>::operator[](int index){if (index < 0 || index > this->getSize() - 1)throw "索引非法!";return this->array[index]; }// 獲取棧容量 template <typename T> int ArrayStack<T>::getCapacity(){return array->getCapacity(); }// 獲取棧內元素個數 template <typename T> int ArrayStack<T>::getSize(){return array->getSize(); }// 判斷棧空 template <typename T> bool ArrayStack<T>::isEmpty(){return array->isEmpty(); }// 判斷棧滿 template <typename T> bool ArrayStack<T>::isFull(){return array->isFull(); }// 元素壓入棧 template <typename T> void ArrayStack<T>::push(T t){array->pushBack(t); }// 元素出棧 template <typename T> T ArrayStack<T>::pop(){return array->removeBack(); }// 查看棧頂元素 template <typename T> T ArrayStack<T>::peek(){return array->getBack(); }#endif //DATA_STRUCTURE_ARRAYSTACK_H

?

?

總結

以上是生活随笔為你收集整理的基于java的数据结构学习——数组实现的栈以及简单应用C++实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。