資料結構 線性結構(3) 鏈棧的實現

2021-08-07 16:42:22 字數 2066 閱讀 3101

/*

*這部分檔案實現我們之前所使用的stack類

*它主要的原理為 後進先出(lifo)

*/#ifndef _stack_h

#define _stack_h

/* *型別: stack*此類建立乙個稱為堆疊的線性結構,其中僅從一端新增和刪除值。

*這個規定產生了乙個(lifo)的行為,它是堆疊的定義特徵。

*基本堆疊操作是push(新增元素到頂部)和pop(把元素從頂部刪除)。

*/template

class stack;

#include

"stackimpl.cpp"

//將實現檔案包含進來

#endif

private:

/*棧的鍊錶結構*/

struct cell;

/*例項化變數*/

cell *stack; /*定義乙個cell型別的指標,指向棧頂*/

int count; /*用返回棧中的元素個數*/

/* make it illegal to copy stacks */

stack(const stack & value)

const stack & operator=(const stack & rhs)

/*

*這個檔案用於實現stack標頭檔案中定義的一系列的方法

*/#ifdef _stack_h

#include "error.h"

/*建構函式*/

template

stack::stack()

/*析構函式*/

template

stack::~stack()

/*返回棧的大小*/

template

int stack::size()

/*判斷棧是否為空*/

template

bool stack::isempty()

/*清空棧*/

template

void stack::clear()

}/*入棧,邊畫圖邊寫**理解*/

template

void stack::push(valuetype element)

/*出棧操作*/

template

valuetype stack::pop()

/*檢視棧頂元素*/

template

valuetype stack::peek()

#endif

#include 

#include "stack.h"

using

namespace

std;

int main()

cout

<< "棧頂元素為:"

<< mystack.peek() << endl;

cout

<< "棧中共有"

<< mystack.size() << "個元素"

<< endl;

int n = mystack.pop();

cout

<< "出棧的元素為:"

<< n << endl;

cout

<< "此時棧頂的元素為:"

<< mystack.peek() << endl;

mystack.push(100);

cout

<< "壓入100後,此時的棧頂為:"

<< mystack.peek() << endl;

mystack.clear();

cout

<< "清空棧後,棧中的元素個數為:"

資料結構鏈棧實現

如題 這是一套完整的可執行的 需要讀者有一定的基礎去閱讀 語言是用c語言實現 在c 環境中編寫 在c 中可直接執行 在c語言中需要改部分標頭檔案和輸出語句 標頭檔案 這要是 的宣告部分 ifndef head define head include using namespace std typed...

資料結構 線性結構 棧

棧 和佇列相反的作用,越是先存入的資料就得越到後才能取出,根據這個特性可以用陣列或鍊錶模擬出棧。陣列模擬棧 新增資料正常順序,每天加乙個數棧頂加一次,彈棧的時候將棧頂指標的數彈出即可,遍歷棧陣列時是從棧頂開始迴圈。1 class arraystack9 判斷棧是否已滿 10public boolea...

資料結構之線性結構 棧結構(靜態棧的實現)

1,棧的定義 所謂 棧 就是一種可以實現後進先出的資料儲存結構。舉個栗子 我們生活中常見的與棧結構很類似的就是我們裝羽毛球的球筒。我們買羽毛球是通常是要買上一筒羽毛球備用。棧結構有兩種主要的操作,乙個入棧,另乙個是出棧。羽毛球入筒的過程就好比是入棧,羽毛球出筒的過程就好比是出棧。這兩個過程模擬得非常...