欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2022年06月25日 08:54:03   作者:肩上風騁  
今天我們學習的是鏈棧,也就是說棧的鏈式結構,我們運用順序鏈的方式來實現(xiàn)。首先呢,鏈棧是不存在存儲空間滿的情況的,所以可以說它是個無底洞,然而我們之前學的順序棧是有額定空間的

鏈棧簡述

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

示例代碼

直接上代碼:

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:
	//這里可以不定義該類類型的指針,該類類型變量定義后只能使用單獨的初始化函數(shù)初始化,
	//不能用構造函數(shù),會造成循環(huán)調(diào)用構造函數(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;
}
// 運行程序: Ctrl + F5 或調(diào)試 >“開始執(zhí)行(不調(diào)試)”菜單
// 調(diào)試程序: F5 或調(diào)試 >“開始調(diào)試”菜單
// 入門使用技巧: 
//   1. 使用解決方案資源管理器窗口添加/管理文件
//   2. 使用團隊資源管理器窗口連接到源代碼管理
//   3. 使用輸出窗口查看生成輸出和其他消息
//   4. 使用錯誤列表窗口查看錯誤
//   5. 轉到“項目”>“添加新項”以創(chuàng)建新的代碼文件,或轉到“項目”>“添加現(xiàn)有項”以將現(xiàn)有代碼文件添加到項目
//   6. 將來,若要再次打開此項目,請轉到“文件”>“打開”>“項目”并選擇 .sln 文件

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

vs2017 控制臺輸出程序。

運行結果

注意

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

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

您可能感興趣的文章:

相關文章

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

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

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

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

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

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

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

    C語言數(shù)據(jù)結構時間復雜度及空間復雜度簡要分析

    我們在進行編程時,往往會開發(fā)諸多的算法,那么我們怎么在那么多算法中找到最好的那個呢?本文主要介紹時間和空間復雜度概念及時間復雜度的求解,預祝讀者學習愉快
    2021-10-10
  • C++ Primer Plus詳解

    C++ Primer Plus詳解

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

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

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

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

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

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

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

    C語言詳解熱門考點結構體內(nèi)存對齊

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

    C語言實現(xiàn)雙向鏈表

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

最新評論