亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++詳解鏈棧的實(shí)現(xiàn)

 更新時(shí)間:2022年06月25日 08:54:03   作者:肩上風(fēng)騁  
今天我們學(xué)習(xí)的是鏈棧,也就是說(shuō)棧的鏈?zhǔn)浇Y(jié)構(gòu),我們運(yùn)用順序鏈的方式來(lái)實(shí)現(xiàn)。首先呢,鏈棧是不存在存儲(chǔ)空間滿的情況的,所以可以說(shuō)它是個(gè)無(wú)底洞,然而我們之前學(xué)的順序棧是有額定空間的

鏈棧簡(jiǎn)述

鏈棧從概念上看是鏈表和棧的結(jié)合,含有棧先進(jìn)后出的特性,也具有鏈表的動(dòng)態(tài)增加節(jié)點(diǎn)的特性,這里相當(dāng)于在鏈表的基礎(chǔ)上增加只能從一端操作,且保持先進(jìn)后出的特性。將頭節(jié)點(diǎn)所在的那端看作棧頂,頭節(jié)點(diǎn)后緊接著的節(jié)點(diǎn)所在的位置,即第一個(gè)存儲(chǔ)數(shù)據(jù)的節(jié)點(diǎn)所在的位置為出棧入棧的位置。

示例代碼

直接上代碼:

LinkStack.h

#pragma once
typedef struct LINKNODE {
	struct LINKNODE *pNext;
}LinkNode;
class LinkStack
{
public:
	LinkStack();
	~LinkStack();
	void pushLinkStack(LinkNode *data);
	void popLinkStack();
	LinkNode *getTopLinkStack();
	int getSizeLinkStack();
	void clearStack();
private:
	//這里可以不定義該類類型的指針,該類類型變量定義后只能使用單獨(dú)的初始化函數(shù)初始化,
	//不能用構(gòu)造函數(shù),會(huì)造成循環(huán)調(diào)用構(gòu)造函數(shù)的死循環(huán)中
//	LinkStack *m_LinkStack;
	LinkNode m_head;
	int m_size;
};

LinkStack.cpp

#include "LinkStack.h"
LinkStack::LinkStack()
{
	m_size = 0;
}
LinkStack::~LinkStack()
{
}
void LinkStack::pushLinkStack(LinkNode * data)
{
	if (data == nullptr)
	{
		return;
	}
	data->pNext = m_head.pNext;
	m_head.pNext = data;
	m_size++;
}
void LinkStack::popLinkStack()
{
	LinkNode *pDel = m_head.pNext;
	m_head.pNext = pDel->pNext;
	m_size--;
}
LinkNode * LinkStack::getTopLinkStack()
{
	return m_head.pNext;
}
int LinkStack::getSizeLinkStack()
{
	return m_size;
}
void LinkStack::clearStack()
{
	m_head.pNext = nullptr;
	m_size = 0;
}

main.cpp

#include <iostream>
#include "LinkStack.h"
using namespace std;
typedef struct PERSON 
{
	LinkNode  node;
	char name[64];
	int age;
}Person;
void test() 
{
	LinkStack *pLinkStack = new LinkStack;
	Person p1, p2, p3,p4,p5;
	strcpy_s(p1.name,"hudh");
	strcpy_s(p2.name,"呼呼");
	strcpy_s(p3.name,"jidi");
	strcpy_s(p4.name, "hus");
	strcpy_s(p5.name, "akios");
	p1.age = 34;
	p2.age = 45;
	p3.age = 67;
	p4.age = 67;
	p5.age = 78;
	pLinkStack->pushLinkStack((LinkNode*)&p1);
	pLinkStack->pushLinkStack((LinkNode*)&p2);
	pLinkStack->pushLinkStack((LinkNode*)&p3);
	pLinkStack->pushLinkStack((LinkNode*)&p4);
	pLinkStack->pushLinkStack((LinkNode*)&p5);
	while (pLinkStack->getSizeLinkStack() > 0) 
	{
		Person *pData = (Person*)pLinkStack->getTopLinkStack();
		cout << "name: " << pData->name << " age:" << pData->age << endl;
		pLinkStack->popLinkStack();
	}
	delete pLinkStack;
	pLinkStack = nullptr;
} 
int main()
{
	test();
	return 0;
}
// 運(yùn)行程序: Ctrl + F5 或調(diào)試 >“開始執(zhí)行(不調(diào)試)”菜單
// 調(diào)試程序: F5 或調(diào)試 >“開始調(diào)試”菜單
// 入門使用技巧: 
//   1. 使用解決方案資源管理器窗口添加/管理文件
//   2. 使用團(tuán)隊(duì)資源管理器窗口連接到源代碼管理
//   3. 使用輸出窗口查看生成輸出和其他消息
//   4. 使用錯(cuò)誤列表窗口查看錯(cuò)誤
//   5. 轉(zhuǎn)到“項(xiàng)目”>“添加新項(xiàng)”以創(chuàng)建新的代碼文件,或轉(zhuǎn)到“項(xiàng)目”>“添加現(xiàn)有項(xiàng)”以將現(xiàn)有代碼文件添加到項(xiàng)目
//   6. 將來(lái),若要再次打開此項(xiàng)目,請(qǐng)轉(zhuǎn)到“文件”>“打開”>“項(xiàng)目”并選擇 .sln 文件

開發(fā)環(huán)境

vs2017 控制臺(tái)輸出程序。

運(yùn)行結(jié)果

注意

棧是連續(xù)的存儲(chǔ)空間,故而在數(shù)量上會(huì)受到限制,而鏈棧打破了棧的內(nèi)存空間的連續(xù)性,擴(kuò)展性更強(qiáng)。

到此這篇關(guān)于C++詳解鏈棧的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C++鏈棧內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pthread并發(fā)編程之線程基本元素和狀態(tài)的剖析

    Pthread并發(fā)編程之線程基本元素和狀態(tài)的剖析

    本篇文章主要給大家介紹pthread并發(fā)編程當(dāng)中關(guān)于線程的基礎(chǔ)概念,并且深入剖析進(jìn)程的相關(guān)屬性和設(shè)置,以及線程在內(nèi)存當(dāng)中的布局形式,幫助大家深刻理解線程
    2022-11-11
  • C語(yǔ)言如何建立鏈表并實(shí)現(xiàn)增刪查改詳解

    C語(yǔ)言如何建立鏈表并實(shí)現(xiàn)增刪查改詳解

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言如何建立鏈表并實(shí)現(xiàn)增刪查改的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C語(yǔ)言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • C語(yǔ)言深入探究選擇排序與基數(shù)排序使用案例講解

    C語(yǔ)言深入探究選擇排序與基數(shù)排序使用案例講解

    算法中排序是十分重要的,而每一個(gè)學(xué)習(xí)計(jì)算機(jī)的都會(huì)在初期的時(shí)候接觸到這種排序,下面這篇文章主要給大家介紹了關(guān)于c語(yǔ)言選擇排序與基數(shù)排序使用的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)時(shí)間復(fù)雜度及空間復(fù)雜度簡(jiǎn)要分析

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)時(shí)間復(fù)雜度及空間復(fù)雜度簡(jiǎn)要分析

    我們?cè)谶M(jìn)行編程時(shí),往往會(huì)開發(fā)諸多的算法,那么我們?cè)趺丛谀敲炊嗨惴ㄖ姓业阶詈玫哪莻€(gè)呢?本文主要介紹時(shí)間和空間復(fù)雜度概念及時(shí)間復(fù)雜度的求解,預(yù)祝讀者學(xué)習(xí)愉快
    2021-10-10
  • C++ Primer Plus詳解

    C++ Primer Plus詳解

    這篇文章主要為大家詳細(xì)介紹了C++ Primer Plus,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • C語(yǔ)言?超詳細(xì)模擬實(shí)現(xiàn)單鏈表的基本操作建議收藏

    C語(yǔ)言?超詳細(xì)模擬實(shí)現(xiàn)單鏈表的基本操作建議收藏

    單鏈表是后面要學(xué)的雙鏈表以及循環(huán)鏈表的基礎(chǔ),要想繼續(xù)深入了解數(shù)據(jù)結(jié)構(gòu)以及C語(yǔ)言,我們就要奠定好這塊基石!接下來(lái)就和我一起學(xué)習(xí)吧
    2022-03-03
  • C語(yǔ)言中的long型究竟占4個(gè)字節(jié)還是8個(gè)字節(jié)(遇到的坑)

    C語(yǔ)言中的long型究竟占4個(gè)字節(jié)還是8個(gè)字節(jié)(遇到的坑)

    小編在復(fù)習(xí)C語(yǔ)言的時(shí)候踩到了不少坑,糾結(jié)long類型究竟占4個(gè)字節(jié)還是8個(gè)字節(jié)呢?好,今天通過(guò)本文給大家分享下我的詳細(xì)思路,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • Matlab實(shí)現(xiàn)四種HSV色輪圖繪制的示例代碼

    Matlab實(shí)現(xiàn)四種HSV色輪圖繪制的示例代碼

    色輪圖就是色彩相位圖,它完整表現(xiàn)了色相環(huán)360度的全部顏色。本文將利用Matlab語(yǔ)言繪制四種不同的HSV色輪圖,感興趣的可以動(dòng)手嘗試一下
    2022-07-07
  • C語(yǔ)言詳解熱門考點(diǎn)結(jié)構(gòu)體內(nèi)存對(duì)齊

    C語(yǔ)言詳解熱門考點(diǎn)結(jié)構(gòu)體內(nèi)存對(duì)齊

    C?數(shù)組允許定義可存儲(chǔ)相同類型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是?C?編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許你存儲(chǔ)不同類型的數(shù)據(jù)項(xiàng),本篇讓我們來(lái)了解C?的結(jié)構(gòu)體內(nèi)存對(duì)齊
    2022-04-04
  • C語(yǔ)言實(shí)現(xiàn)雙向鏈表

    C語(yǔ)言實(shí)現(xiàn)雙向鏈表

    本文給大家分享的是一段使用C語(yǔ)言實(shí)現(xiàn)雙向鏈表的代碼,完全是根據(jù)自己的理解和認(rèn)識(shí)來(lái)編寫的,希望大家能夠喜歡,文章的最后附上了一個(gè)網(wǎng)友寫的對(duì)于雙向鏈表刪除節(jié)點(diǎn)、插入節(jié)點(diǎn)、雙向輸出等操作的代碼,也非常不錯(cuò),推薦給大家
    2015-03-03

最新評(píng)論