基于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

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448146.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448146.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448146.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

女性開車5大安全駕車好習慣 為您支招

一些女性車主技術不夠熟練&#xff0c;緊急處理能力差&#xff0c;開車過程中需要注意更多的細節。養成一些好習慣&#xff0c;對于女性車主來說&#xff0c;開車的安全度會大大提高。 ● 車窗上不掛毛絨玩具 汽車是生活的一部分空間&#xff0c;許多女性車主都喜歡把這部分空間…

DIV 半透明層、 CSS實現網頁 背景半透明

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 DIV半透明實現&#xff0c;使用CSS實現DIV成半透明效果&#xff0c;CSS實現層與背景半透明效果。 一、DIV CSS半透明基礎介紹 - …

node 安裝 webpack

首先要安裝 Node.js&#xff0c; Node.js 自帶了軟件包管理器 npm&#xff0c;Webpack 需要 Node.js v0.6 以上支持&#xff0c;建議使用最新版 Node.js。 用 npm 安裝 Webpack&#xff1a; $ npm install webpack -g此時 Webpack 已經安裝到了全局環境下&#xff0c;可以通過命…

Thinking in C++遇到的函數指針及應用

// // Created by PC-Saw on 2019/1/24. //#include <iostream>#define TEST 2/* 1. */ typedef int* (*(*fp1)(int))[10]; // 首先是一個函數指針&#xff0c;接受一個int型參數&#xff0c;返回一個指向10個int指針數組的指針 /* 2. */ typedef i…

html 標簽內背景圖片自適應 div 大小

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 只需通過css設置background-size屬性為contain&#xff0c;即 background-size:contain 注意&#xff1a;一定要在先設置background之…

Code Project精彩系列(轉)

Code Project精彩系列&#xff08;轉&#xff09; Applications Crafting a C# forms Editor From scratch http://www.codeproject.com/csharp/SharpFormEditorDemo.asp 建立一個類似C#的環境, 實現控件拖拉&#xff0c;屬性 Packet Capture and Analayzer 網絡封包截獲 http…

加速時如何換擋

加速時如何換擋&#xff0c;您知道嗎?為了使換擋過程順利進行&#xff0c;變速器內齒輪平穩嚙合&#xff0c;必須掌握好發動機轉速&#xff0c;在適當時機推動變速桿操縱齒輪嚙合。為此&#xff0c;要通過反復練習&#xff0c;一邊踩踏油門踏板&#xff0c;一邊聽發動機運轉聲…

C++ 學習雜談:sizeof和sizeof(string)的問題

最近遇到一個令我困惑的問題&#xff0c;就是 sizeof&#xff08;string&#xff09;的值&#xff0c;之前在vs2010上測得是固定28&#xff0c;最近在用CLion&#xff0c;上面測得是4&#xff0c;出現了不一樣的結果&#xff0c;我又在vs2013上試了一下&#xff0c;結果又不一樣…

vue 項目 引用(外部) js、css

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 我的工程結構&#xff1a; 1. 引入 css 有 2 種方式&#xff1a; 方式 1 <script type"text/javascript">import .…

FAQ:Container Classes篇

1、Why should I use container classes rather than simple arrays?&#xff08;為什么應該使用容器類而不是簡單的數組&#xff1f;&#xff09; In terms of time and space, a contiguous array of any kind is just about the optimal construct for accessing a sequen…

自動擋車擋位的基本知識介紹

一般來說&#xff0c;自動檔汽車的自動變速器的檔位分為P、R、N、D、2 (或S)、L(或1)等。下面分別詳細介紹如下&#xff1a; P (Parking) 停車檔&#xff0c;或稱泊車檔&#xff1a; P用作停車之用&#xff0c;它是利用機械裝置去鎖緊汽車的轉動部分&#xff0c;使汽車不能移動…

Java 強引用、弱引用、軟引用、虛引用

1、強引用&#xff08;StrongReference&#xff09; 強引用是使用最普遍的引用。如果一個對象具有強引用&#xff0c;那垃圾回收器絕不會回收它。如下&#xff1a; Object onew Object(); // 強引用 當內存空間不足&#xff0c;Java虛擬機寧愿拋出OutOfMemoryError錯誤…

解決:(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8082 -j DNAT --to-destin

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 用 docker 部署一個前端工程&#xff0c;run 后容器有了&#xff0c;卻不是運行狀態&#xff0c;是創建狀態&#xff0c;于是我執行 …

在DOS命令行執行MYSQL語句

最近有個工作需要從MSSQL庫中取數據然后導入SQL 2005。由于之前曾經做過利用BCP導入SQL&#xff0c;因此想借助這個工具實現此功能。 在探索過程中&#xff0c;好像發現MYSQL不能想SQL那樣有OSSQL這樣的外部命令。因此想到利用MYSQL執行文件內容的功能來生成導出數據。&#xf…

無損壓縮——Huffman編碼

最近項目中涉及到人臉關鍵點中神經網絡的壓縮&#xff0c;采用了性能較好的哈夫曼編碼進行。 源碼地址&#xff1a;https://github.com/believeszw/HuffmanCompress 1 引言 哈夫曼&#xff08;Huffman&#xff09;編碼算法是基于二叉樹構建編碼壓縮結構的&#xff0c;它是數據…

26條安全開車經驗 開車20年老司機分享

總有些人&#xff0c;覺得自己開車技術比舒馬赫牛叉&#xff0c;市區高速漂移無比瀟灑。也總有些人&#xff0c;覺得路是自家的鋪的&#xff0c;愛怎么開就怎么開&#xff0c;愛停哪就停哪&#xff0c;哪個不服打開車窗就是一句國罵一個中指。其實他們都沒有意識到&#xff0c;…

解決:Request header field Content-Type is not allowed by Access-Control-Allow-Headers

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 前端 vue 工程 post 請求后端接口&#xff0c;報錯&#xff1a; Request header field Content-Type is not allowed by Access-Con…

書寫README的各種markdown語法

README 該文件用來測試和展示書寫README的各種markdown語法。GitHub的markdown語法在標準的markdown語法基礎上做了擴充&#xff0c;稱之為GitHub Flavored Markdown。簡稱GFM&#xff0c;GFM在GitHub上有廣泛應用&#xff0c;除了README文件外&#xff0c;issues和wiki均支持…

Apache2.4配置ssl

1》驗站 如下截圖&#xff0c;驗站就是在DNS域名商哪里&#xff0c;在對應host下面&#xff0c;添加一個TXT記錄類型&#xff0c;主機記錄&#xff0c;記錄值后&#xff0c;檢測即可。   2》SSL證書申請 阿里云&#xff0c;騰訊云有很多免費證書申請&#xff0c;免費的缺點是…

助你解決新手開車四大問題 為您支招

新手開車起步技巧涉及方方面面&#xff0c;對于新手來說&#xff0c;如何首次將車獨自開上路且不發生任何意外是眾多人熱切盼望的理想方式。但是新手上路難免會磕磕碰碰&#xff0c;發生小摩擦都是在所難免的&#xff0c;那么如何在起步階段就將發生事故的概率降到最低呢?在此…