資料結構之 棧stack 模板類(鍊錶表示)

2021-08-09 23:48:43 字數 1859 閱讀 4665

使用鍊錶表示的棧結構模板類程式如下所示

#ifndef _h_mystack_list_h

#define _h_mystack_list_h

/巨集定義棧的臨界長度,超過此長度之後需要在利用率較低的情況下**空間

#define boundary_length 2048

#include

template

class mystack_list;

template

struct snode

;template

class mystack_list

;template

mystack_list::mystack_list(void)

template

mystack_list::mystack_list(const mystack_list& st)

else

p = p->next;

}}template

mystack_list::~mystack_list()

m_phead = null;

}template

void mystack_list::push(const t val)

template

t mystack_list::pop(void)/彈出棧頂元素(刪除棧頂元素,如果不存在,則throw異常)

struct snode* p = m_phead;

m_phead = m_phead->next;

t val = p->val;

delete p;

return val;

}template

int mystack_list::clear(void)清空,並且返回元素數目

m_phead = null;

return cnt;

}template

t mystack_list::top(void)///僅僅返回棧頂元素,為空則丟擲異常

template

int mystack_list::size(void)/計算元素的數目

return cnt;

}template

bool mystack_list::isempty(void)///指示棧是否為空

template

mystack_list& mystack_list::operator=(const mystack_list& st)

else

p = p->next;

}return(*this);

}#endif

使用到的測試程式如下所示(簡單測試了一下,可能不全面)

#include 

#include "mystack_list.cpp"

void main(void)

int topval = 0;

mystack_listmst2(mst);

mystack_listmst3;

mst3 = mst2;

while (!mst.isempty())

std:

:cout<:

:endl;

while (!mst2.isempty())

std:

:cout<:

:endl;

while (!mst3.isempty())

std:

:cout<:

:endl;

std:

:system("pause");

}

說明一下,最近寫的比往常頻繁了,倒不是因為自己要奮發什麼的,只是最近看書看到需要練筆的地方,而且恰好自己能夠寫出來。

python資料結構之棧(stack)

目錄 棧的定義 棧的基本操作 小練習棧遵循後進先出 last in first out 現實生活中也有不少這樣的例子,比如在學校食堂吃完飯時,你把盤子放到桌子上,疊起來之後,阿姨過來拿盤子出去洗,假如是手洗,那肯定是先從最上面的盤子開始拿來洗的,而最上面的盤子是最後放上去的,卻是第乙個 被拿出來的,...

C 資料結構之Stack(棧)

stack,棧,是好比堆積木似的資料結構,從上之下堆積,取出時按 lifo last int first out後進先出的規則。棧一般為執行緒所獨有,也就是每個執行緒有其自有的棧,與heap堆一般為共有的不同 heap為程序所用,stack為執行緒所用?stack主要有四種操作 empty判斷棧是否...

資料結構 棧(Stack)

只允許在一端進行插入或刪除操作的線性表。首先,棧是一種線性表,但限定這種線性表只能在某一段進行插入和刪除操作。棧頂 top 線性表允許進行插入和刪除的一端。棧底 bottom 固定的,不允許進行插入和刪除的另一端。空棧 不含任何元素。如上圖 a1為棧底元素,an為棧頂元素。由於棧只能在棧頂進行插入和...