第三章 堆疊

2021-05-22 05:36:54 字數 1665 閱讀 5665

1.基礎知識:堆疊可以實現很多的應用,遞迴的問題轉化成非遞迴形式,在本質上也是堆疊的問題.它是一種"filo"操作的資料結構,一般也有兩種儲存方式:陣列跟鍊錶實現形式,這裡我給出了鍊錶形式的堆疊模板,裡面包括了基本的堆疊所有的操作,還有兩個比較著名的應用例子,時間倉促,精力比較有限,關於迷宮老鼠還沒有實現.盡請各位原諒,哈哈,我的目標是複習一下堆疊的基本操作及實現,已經達到,就不作進一步細化了.有興趣的可以去試著寫寫.

2.源**實現

/////  book name   :   c++ structure and algorithm

//  filename    :   stack.cpp

//  version     :   1.0

//  author      :   yangfei

//  date        :   2010-04-08 21:33:55

//  comment     :  堆疊類實現,應用:中綴到字尾表示式的轉換,括號匹配,堆疊漢諾塔,

//                 火車車廂重排,開關盒佈線,離線等價類問題,迷宮老鼠

/////鍊錶形式的堆疊**實現

template

class stack

void push(const t data);

int pop();

int getcount() const;

bool isempty();

bool isfull();

//輸出堆疊中的當前元素

void printstack();

t top() const;

};template

void stack::printstack()

}template

void stack::push(const t data)

}//pop方法要刪除棧頂元素

template

int stack::pop()

}template

bool stack::isempty()

template

bool stack::isfull()

catch(cnode* newnode)

template

int stack::getcount() const

//堆疊的應用:括號匹配,堆疊求解漢諾塔,火車車廂重排,開關盒佈線,離線等價類問題,迷宮老鼠

//1.括號匹配問題

void parenthesesmatch()

else if(ch==']'&&!stack->isempty()&&stack->top()=='[')

stack->pop();

}if(stack->isempty())

cout<<"括號匹配!"// cout//定義三個堆疊以每次儲存塔的當前狀態

class tower

;tower::tower()

void tower::initstack0(int n)

}//友元函式呼叫類函式

void hanio(int n)

int main()

//堆疊測試1.括號匹配

stackstack;

stack.push(1);

stack.push(2);

coutreturn 0;

}

第三章 曙光

第三章 曙光 第二場校園招聘開始了。其實,洋對這個公司的不是很了解。因為前幾天突然在bbs上面看到了這個公司的招聘資訊,洋覺得這個公司不錯,就上網投了簡歷。接下來的乙個多小時,讓洋很震撼!想不到這個公司這個厲害,而且無論從哪方面來說,絕對不比之前的那個公司差。想不到自己的乙個不經意的決定到了這個大的...

第三章 遞迴

遞迴是一種強大的方法,它允許乙個物件以其自身更小的形式來定義自己。恐怕沒有什麼比觀察神秘的自然界中出現的遞迴現象更好的方法來體會遞迴的重要意義了。想想蕨類植物的葉子,每片葉子的小枝幹都是整片葉子的較小縮影 又或者兩個反光的物體,相互對映對方的漸遠的影像。這樣的例子使我們明白儘管大自然的力量是強大的,...

第三章作業

1.完成課本每乙個程式設計題。要求先畫出流程演算法圖或n s圖,然後程式設計實現,有可能的話使用兩種以上方法 2.程式設計求 百錢百雞 問題。雞翁一值錢五,雞母 一值錢三,雞雛三值錢一。百錢買百雞,問雞翁 雞母 雞雛各幾何?3.程式設計輸入乙個整數,計算它是幾位數字,分別輸出每一位數字,並輸出各個數...