国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C/C++】實(shí)現(xiàn)模板類數(shù)據(jù)結(jié)構(gòu) -- 棧 (親測(cè)可用)

這篇具有很好參考價(jià)值的文章主要介紹了【C/C++】實(shí)現(xiàn)模板類數(shù)據(jù)結(jié)構(gòu) -- 棧 (親測(cè)可用)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

/* *
* 模板類: 棧結(jié)構(gòu)[借助數(shù)組實(shí)現(xiàn)]
*/
template<typename T>
class Stack {
private:
	T *data;	/* 數(shù)組第一個(gè)元素地址,存放T類型數(shù)組元素 */
	int size;	/* 當(dāng)前棧實(shí)際填充數(shù)量 */
	int capacity;	/* 最大裝載量 */
public:
	Stack(int m_capacity) : size(0), capacity(m_capacity) {/* 類構(gòu)造函數(shù)初始化列表進(jìn)行初始化變量, 降低拷貝賦值次數(shù) */
		zz_log("Stack constructor");
		data = new T[capacity];
		zz_log("Stack capacity: %d, memory size: %u bytes", capacity, capacity * sizeof(T));
	}

	void push(T elem) {
		if (size > capacity - 1) {
			zz_log("Stack overflow");
			return;
		}
		zz_log("Statck push [%d] elem", size);
		data[size++] = elem;
	}

	T pop() {
		zz_log("Stack pop [%d] elem", size - 1);
		return data[--size]; /* 左減減,是由于在push操作后,size進(jìn)行了自增1, 為下次數(shù)據(jù)填充做準(zhǔn)備。所以要pop時(shí),要先向前移動(dòng)一位,才是最后一位 */
	}

	int empty() {
		zz_log("Stack current elem count: %d", size);
		return size;
	}

	~Stack() {
		zz_log("Stack destructor");
		delete[] data; /* data指針?biāo)赶虻膬?nèi)存,使用delete[]運(yùn)算符釋放。 */
		data = NULL;
	}
};

void test_stack() 
{
	zz_log("test_statck run");

	Stack<int> s(2);
	s.push(1);
	s.push(2);
	s.push(3);
	zz_log("pop top elem from stack: [%d]", s.pop());
}

int main()
{
	test_stack();
	return 0;
}

知識(shí)點(diǎn):

在C++中,可以使用模板類來(lái)定義通用的數(shù)據(jù)結(jié)構(gòu)或算法,以適應(yīng)不同類型的數(shù)據(jù)。下面是定義一個(gè)模板類的基本語(yǔ)法:

template <typename T>
class ClassName {
    // 類的成員和方法
};

在上面的代碼中,template <typename T> 表示這是一個(gè)模板類的聲明,T 是一個(gè)占位符類型,可以在類中使用。你可以根據(jù)需要選擇其他的占位符名稱,比如使用 class 關(guān)鍵字代替 typename

在模板類的定義中,你可以使用 T 作為類型參數(shù)來(lái)定義類的成員變量、成員函數(shù)和構(gòu)造函數(shù)。例如:

template <typename T>
class Stack {
private:
    T* data;
    int size;
public:
    Stack(int capacity) {
        data = new T[capacity];
        size = 0;
    }
    
    void push(T element) {
        data[size++] = element;
    }
    
    T pop() {
        return data[--size];
    }
};

上面的代碼定義了一個(gè)模板類 Stack,用于表示一個(gè)棧數(shù)據(jù)結(jié)構(gòu)。T 是棧中元素的類型,可以是任意類型。在構(gòu)造函數(shù)、pushpop 方法中,可以使用 T 來(lái)聲明變量和參數(shù)的類型。

使用模板類時(shí),你可以根據(jù)需要指定具體的類型參數(shù)。例如:

Stack<int> intStack(10);  // 創(chuàng)建一個(gè)存儲(chǔ)整數(shù)的棧
intStack.push(5);
intStack.push(10);
int poppedInt = intStack.pop();

Stack<double> doubleStack(10);  // 創(chuàng)建一個(gè)存儲(chǔ)浮點(diǎn)數(shù)的棧
doubleStack.push(3.14);
doubleStack.push(2.718);
double poppedDouble = doubleStack.pop();

上面的代碼分別創(chuàng)建了一個(gè)存儲(chǔ)整數(shù)和浮點(diǎn)數(shù)的棧,并進(jìn)行了一些操作。

通過(guò)使用模板類,你可以在不同的類型上重用相同的代碼,提高代碼的復(fù)用性和靈活性。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-662512.html

到了這里,關(guān)于【C/C++】實(shí)現(xiàn)模板類數(shù)據(jù)結(jié)構(gòu) -- 棧 (親測(cè)可用)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu) 隊(duì)列(C語(yǔ)言實(shí)現(xiàn))

    數(shù)據(jù)結(jié)構(gòu) 隊(duì)列(C語(yǔ)言實(shí)現(xiàn))

    ????????任其事必圖其效;欲責(zé)其效,必盡其方?!?dú)W陽(yáng)修;本篇文章主要寫的是什么是隊(duì)列、以及隊(duì)列是由什么組成的和這些組成接口的代碼實(shí)現(xiàn)過(guò)程。( 大多細(xì)節(jié)的實(shí)現(xiàn)過(guò)程以注釋的方式展示請(qǐng)注意查看 ) ? ?話不多說(shuō)安全帶系好,發(fā)車?yán)?(建議電腦觀看) 。 附

    2024年02月11日
    瀏覽(16)
  • C語(yǔ)言實(shí)現(xiàn)棧--數(shù)據(jù)結(jié)構(gòu)

    C語(yǔ)言實(shí)現(xiàn)棧--數(shù)據(jù)結(jié)構(gòu)

    魔王的介紹:??????一名雙非本科大一小白。 魔王的目標(biāo):??努力趕上周圍卷王的腳步。 魔王的主頁(yè):??????大魔王.?????? ?????大魔王與你分享:“斷劍重鑄的銳雯敗于菲奧娜,原來(lái)破鏡重圓的愛(ài)到處都是破綻”。 棧是一種特殊的線性表,其只允許在固定的

    2023年04月22日
    瀏覽(14)
  • 數(shù)據(jù)結(jié)構(gòu):鏈表(Python語(yǔ)言實(shí)現(xiàn))

    鏈表分為單鏈表、雙鏈表、循環(huán)單鏈表和循環(huán)雙鏈表。 本文以單鏈表為例,用python創(chuàng)建一個(gè)單鏈表數(shù)據(jù)結(jié)構(gòu),同時(shí)定義鏈表節(jié)點(diǎn)的增加、刪除、查詢和打印操作。 創(chuàng)建一個(gè)名為Node的節(jié)點(diǎn)類,節(jié)點(diǎn)類里面包含2個(gè)屬性和1個(gè)方法。 分別為data數(shù)據(jù)域?qū)傩院蚽ext指針域?qū)傩浴?has_va

    2024年02月16日
    瀏覽(21)
  • 數(shù)據(jù)結(jié)構(gòu)——隊(duì)列(C語(yǔ)言實(shí)現(xiàn))

    數(shù)據(jù)結(jié)構(gòu)——隊(duì)列(C語(yǔ)言實(shí)現(xiàn))

    隊(duì)列是一種特殊的線性結(jié)構(gòu),數(shù)據(jù)只能在一端插入,數(shù)據(jù)也只能在另一端進(jìn)行刪除。插入數(shù)據(jù)的那一端稱之為隊(duì)尾,插入數(shù)據(jù)的動(dòng)作稱之為入隊(duì)。刪除數(shù)據(jù)的那一端稱之為隊(duì)頭,刪除數(shù)據(jù)的動(dòng)作稱之為出列。隊(duì)列遵守的是FIFO原則(Frist In First Out),即先進(jìn)先出原則。 隊(duì)列具

    2024年02月03日
    瀏覽(26)
  • 數(shù)據(jù)結(jié)構(gòu) 棧(C語(yǔ)言實(shí)現(xiàn))

    數(shù)據(jù)結(jié)構(gòu) 棧(C語(yǔ)言實(shí)現(xiàn))

    ????????時(shí)間就是生命,時(shí)間就是速度,時(shí)間就是氣力?!?;本章繼續(xù)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),本章主要講了什么是棧以及棧的基本功能和實(shí)現(xiàn)方法。 ? ?話不多說(shuō)安全帶系好,發(fā)車?yán)?(建議電腦觀看) 。 附:紅色,部分為重點(diǎn)部分;藍(lán)顏色為需要記憶的部分(不是死記

    2024年02月09日
    瀏覽(21)
  • 隊(duì)列--C語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)

    隊(duì)列--C語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)

    本期帶大家一起用C語(yǔ)言實(shí)現(xiàn)隊(duì)列?????? 隊(duì)列是一種線性數(shù)據(jù)結(jié)構(gòu),它按照先進(jìn)先出(FIFO)的原則進(jìn)行操作??梢园殃?duì)列想象成排隊(duì)買票或者排隊(duì)上公交車的隊(duì)伍。 順序隊(duì)列 由一個(gè)連續(xù)的內(nèi)存區(qū)域組成,可以存儲(chǔ)多個(gè)元素。隊(duì)列有兩個(gè)指針,分別指向隊(duì)頭(Front)和隊(duì)尾(

    2024年02月16日
    瀏覽(23)
  • C語(yǔ)言實(shí)現(xiàn)隊(duì)列--數(shù)據(jù)結(jié)構(gòu)

    C語(yǔ)言實(shí)現(xiàn)隊(duì)列--數(shù)據(jù)結(jié)構(gòu)

    ????????????????????????Take your time ! ???????????????????????? ??個(gè)人主頁(yè):??????大魔王?????? ??所屬專欄:??魔王的修煉之路–數(shù)據(jù)結(jié)構(gòu)?? 如果你覺(jué)得這篇文章對(duì)你有幫助,請(qǐng)?jiān)谖恼陆Y(jié)尾處留下你的 點(diǎn)贊 ??和 關(guān)注 ??,支持一

    2024年02月05日
    瀏覽(14)
  • 數(shù)據(jù)結(jié)構(gòu)初階(用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu))--棧和隊(duì)列

    數(shù)據(jù)結(jié)構(gòu)初階(用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu))--棧和隊(duì)列

    ??歡迎來(lái)到T_X_Parallel的博客!! ?????????博客主頁(yè):T_X_Parallel ?????????專欄 : 數(shù)據(jù)結(jié)構(gòu)初階 ?????????歡迎關(guān)注:??點(diǎn)贊??收藏??留言 這小貓真好看 言歸正傳,通過(guò)上篇有關(guān)順序表和鏈表的博客,可以了解到線性表的一些大致特征,這篇博

    2024年02月08日
    瀏覽(25)
  • 【數(shù)據(jù)結(jié)構(gòu)】C語(yǔ)言實(shí)現(xiàn)順序棧

    【數(shù)據(jù)結(jié)構(gòu)】C語(yǔ)言實(shí)現(xiàn)順序棧

    大家好,很高興又和大家見面啦?。。?在上一個(gè)篇章中,我們介紹了棧的基本概念,以及棧中的重要術(shù)語(yǔ)。通過(guò)介紹我們知道了棧的本質(zhì)也是一種線性表,只不過(guò)它是一種操作受限的線性表。因此棧的實(shí)現(xiàn)方式與線性表的實(shí)現(xiàn)實(shí)際上是大同小異的。下面我們就來(lái)介紹一下如何

    2024年01月19日
    瀏覽(24)
  • 數(shù)據(jù)結(jié)構(gòu)順序表(C語(yǔ)言實(shí)現(xiàn))

    數(shù)據(jù)結(jié)構(gòu)順序表(C語(yǔ)言實(shí)現(xiàn))

    ????????從本章開始就是開始數(shù)據(jù)結(jié)構(gòu)的開端,本章將會(huì)寫出數(shù)據(jù)結(jié)構(gòu)中的順序表的代碼實(shí)現(xiàn),多會(huì)以注釋的方法來(lái)描述一些細(xì)節(jié)(注釋是我們程序員必須常用的工具)。 ? ? ? ? 話不多說(shuō)安全帶系好,發(fā)車?yán)玻ńㄗh電腦觀看)。 附:紅色,部分為重點(diǎn)部分;藍(lán)顏色為需

    2024年02月10日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包