資料結構基礎 13

2021-12-29 20:38:18 字數 1770 閱讀 8661

採用鏈式儲存的棧成為鏈式棧(或簡稱鏈棧), 鏈棧的優點是便於多個棧共享儲存空間和提高其效率, 且不存在棧滿上溢的情況(因為鏈棧是靠指標鏈結到一起,只要記憶體夠大, 則鏈棧理論上可以儲存的元素是沒有上限的);

與順序棧相比, 由於順序棧是採用的陣列實現, 因此一旦陣列填滿, 則必須重新申請記憶體, 並將所有元素」搬家」, 而鏈棧則省略了這一」耗時耗力」的工作, 但卻需要付出附加乙個指標的代價;

鏈棧通常採用單鏈表實現, 並規定所有的操作都必須實在單鏈表的表頭進行, 而且w我們的鏈棧沒有頭結點, m_top直接指向棧頂元素;

鏈式棧的圖示如下:

鏈棧節點構造:

template

class chainnode

type data;

chainnode *next;

};鏈棧設計:

template

class linkstack

~linkstack()

bool isempty() const

void pop() throw(std::out_of_range);

const type &top() const throw(std::out_of_range);

void push(const type &data);

void makeempty();

private:

chainnode *m_top;

};棧的三大操作:

template

const type &linkstack::top() const

throw (std::out_of_range)

template

void linkstack::pop()

throw (std::out_of_range)

template

void linkstack::push(const type &data)

清空整個棧:

template

void linkstack::makeempty()

}輸出棧內所有內容:

template

ostream &operator< &stack)

return os;

}測試**:

int main()

cout << test << endl;

cout << "top = " << test.top() << endl;

test.pop();

cout << "top = " << test.top() << endl;

test.push(1);

cout << "top = " << test.top() << endl;

while (!test.isempty())

cout << test << endl;

test.push(11);

test.push(22);

test.push(33);

cout << test << endl;

test.makeempty();

trycatch (const std::exception &e)

return 0;

}

1 3 資料結構基礎概念

資料結構 資料 所有能被輸入到計算機中,且被計算機處理的符號的集合。資料元素 是資料的基本單元,由若干個資料項組成,也成為結點。資料項 是資料不可分割的最小單元,有時也成域 字段 資料物件 是指相同性質資料元素構成的集合。資料結構 是互相之間存在一種或多種關係的資料元素的集合。資料元素之間的關係,稱...

資料結構1 3 燈塔

我自己用的merge排序,只有50通過。待我優化一下。include using namespace std define maxlength 4000000 typedef long long rank class node class nodelist nodelist rank inverti...

資料結構 day 13

佇列 陣列模擬佇列 一般操作 include using namespace std const int n 100010 在隊尾插入元素,在隊頭彈出元素 int q n hh,tt 1 插入 q tt x 彈出 hh 判斷佇列是否為空 if hh tt not empty else empty 取...