最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

鏈棧簡述

鏈棧從概念上看是鏈表和棧的結(jié)合,含有棧先進后出的特性,也具有鏈表的動態(tài)增加節(jié)點的特性,這里相當于在鏈表的基礎(chǔ)上增加只能從一端操作,且保持先進后出的特性。將頭節(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ù)初始化,
	//不能用構(gòu)造函數(shù),會造成循環(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;
}
// 運行程序: Ctrl + F5 或調(diào)試 >“開始執(zhí)行(不調(diào)試)”菜單
// 調(diào)試程序: F5 或調(diào)試 >“開始調(diào)試”菜單
// 入門使用技巧: 
//   1. 使用解決方案資源管理器窗口添加/管理文件
//   2. 使用團隊資源管理器窗口連接到源代碼管理
//   3. 使用輸出窗口查看生成輸出和其他消息
//   4. 使用錯誤列表窗口查看錯誤
//   5. 轉(zhuǎn)到“項目”>“添加新項”以創(chuàng)建新的代碼文件,或轉(zhuǎn)到“項目”>“添加現(xiàn)有項”以將現(xiàn)有代碼文件添加到項目
//   6. 將來,若要再次打開此項目,請轉(zhuǎn)到“文件”>“打開”>“項目”并選擇 .sln 文件

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

vs2017 控制臺輸出程序。

運行結(jié)果

注意

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

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

您可能感興趣的文章:

相關(guān)文章

  • C++實現(xiàn)數(shù)獨快速求解

    C++實現(xiàn)數(shù)獨快速求解

    這篇文章主要為大家詳細介紹了C++實現(xiàn)數(shù)獨快速求解的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++與C語言常用的語法對比

    C++與C語言常用的語法對比

    這篇文章主要介紹了C++與C語言常用的語法對比,文章基于c++和C語言的相關(guān)資料展開兩者的語法相互對比,需要的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-04-04
  • C語言 volatile與const同時使用應(yīng)注意的問題

    C語言 volatile與const同時使用應(yīng)注意的問題

    “volatile”的含義是“請不要做沒譜的優(yōu)化,這個值可能變掉的”,而并非“你可以修改這個值”。因此,它們本來就不是矛盾的
    2013-09-09
  • C語言實現(xiàn)學生成績管理系統(tǒng)項目

    C語言實現(xiàn)學生成績管理系統(tǒng)項目

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)學生成績管理系統(tǒng)項目,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語言中的sscanf()函數(shù)使用

    C語言中的sscanf()函數(shù)使用

    本文主要介紹了C語言中的sscanf()函數(shù)使用,sscanf通常被用來解析并轉(zhuǎn)換字符串,可以實現(xiàn)很強大的字符串解析功能,下面就一起來了解一下
    2023-05-05
  • C語言中程序環(huán)境和預(yù)處理的詳細圖文講解

    C語言中程序環(huán)境和預(yù)處理的詳細圖文講解

    這篇文章主要給大家介紹了關(guān)于C語言中程序環(huán)境和預(yù)處理的相關(guān)資料,我們寫的C語言代碼,從運行,到在屏幕上生成結(jié)果,經(jīng)歷了比較復(fù)雜的過程,需要的朋友可以參考下
    2023-02-02
  • C++?Boost?Spirit精通教程

    C++?Boost?Spirit精通教程

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • 深入解析unsigned int 和 int

    深入解析unsigned int 和 int

    以下是對unsigned int和int進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • 一篇文章帶你了解C++(STL基礎(chǔ)、Vector)

    一篇文章帶你了解C++(STL基礎(chǔ)、Vector)

    這篇文章主要為大家詳細介紹了C++ STL基礎(chǔ),vector向量容器使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-08-08
  • C語言線程對象和線程存儲的實現(xiàn)

    C語言線程對象和線程存儲的實現(xiàn)

    這篇文章主要介紹了C語言線程對象和線程存儲的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03

最新評論

汤原县| 衡水市| 临江市| 临武县| 绥阳县| 龙山县| 周至县| 尉氏县| 阿拉尔市| 金门县| 兰坪| 华蓥市| 克拉玛依市| 博野县| 沁阳市| 新乡市| 绥江县| 改则县| 天等县| 甘肃省| 江华| 绥滨县| 二连浩特市| 公安县| 新乡市| 句容市| 永新县| 当阳市| 乳山市| 广平县| 汤原县| 台中县| 社会| 孝义市| 同江市| 彝良县| 余江县| 多伦县| 会同县| 怀仁县| 从江县|