91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++鏈棧的實現代碼怎么寫

發布時間:2022-07-08 14:19:38 來源:億速云 閱讀:173 作者:iii 欄目:開發技術

這篇文章主要講解了“C++鏈棧的實現代碼怎么寫”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++鏈棧的實現代碼怎么寫”吧!

鏈棧簡述

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

示例代碼

直接上代碼:

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

開發環境

vs2017 控制臺輸出程序。

運行結果

C++鏈棧的實現代碼怎么寫

注意

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

感謝各位的閱讀,以上就是“C++鏈棧的實現代碼怎么寫”的內容了,經過本文的學習后,相信大家對C++鏈棧的實現代碼怎么寫這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

曲沃县| 武川县| 东乌珠穆沁旗| 诏安县| 鄯善县| 揭东县| 余干县| 永城市| 宝清县| 木里| 克东县| 陵水| 德安县| 六安市| 茂名市| 壶关县| 宣城市| 利津县| 从江县| 伊金霍洛旗| 西贡区| 嵊泗县| 醴陵市| 林州市| 惠来县| 西平县| 福清市| 饶阳县| 阿克陶县| 榆社县| 六盘水市| 宁远县| 武城县| 延吉市| 德兴市| 教育| 巩留县| 兴业县| 石家庄市| 大关县| 隆德县|