資料結構入門系列 用棧解決實際問題(2)

2021-10-05 12:07:31 字數 3294 閱讀 2253

void

duizhan

(int num)

;int j;

cout <<

"要將num轉為哪種進製"

<< endl;

cin >> j;

switch

(j)while(!

stackempty

(st)

) cout << endl;

break

;case16:

while

(num)

while(!

stackempty

(st)

) cout << endl;

break;}

}

void

digui

(int num)

else

cout << num %16;

}}

總**:

//進製轉換

#include

using

namespace std;

//五、分別用棧和遞迴來實現十進位制轉換為16進製制。

#define maxsize 10

typedef

struct

sqstack;

void

initstack

(sqstack &st)

void

destroystack

(sqstack st)

intpush

(sqstack &st,

char x)

//進棧

}int

pop(sqstack &st,

char

&x)//出棧

}int

stackempty

(sqstack &st)

//判斷是否棧空 ,是:1;否:0.

intgettop

(sqstack &st,

char

&x)}

void

outputstack

(sqstack st)

cout << endl;

}void

duizhan

(int num)

;int j;

cout <<

"要將num轉為哪種進製"

<< endl;

cin >> j;

switch

(j)while(!

stackempty

(st)

) cout << endl;

break

;case16:

while

(num)

while(!

stackempty

(st)

) cout << endl;

break;}

}void

digui

(int num)

else

cout << num %16;

}}void

main()

int

fuhaocal

(char fuhao,

int x,

int y)

}int

calculate

(char

*str,

int*result)

}else

if(ch ==

'+'|| ch ==

'-'|| ch ==

'*'|| ch ==

'/')

i++;}

*result = st-

>data[st-

>top]

;return0;

}

#include

#include

#include

"head.h"

using

namespace std;

intpriority

(char a)

return i;

}string caculate

(char a, string a1, string a2)

result =

to_string

(re)

;return result;

}void

main()

else

if(question[i]

=='(')if

(question[i]

==')'

) string s1;

symbol =

pop(symbol, s1)

;continue;}

else

int ithis, ibefore;

ithis =

priority

(question[i]);

ibefore =

priority

(gettop

(symbol)[0

]);if

(ithis > ibefore)

if(ithis <= ibefore)

string s;

s.push_back

(question[i]);

symbol =

push

(symbol, s);}

}}} cout <<

gettop

(data)

<< endl;

}

該問題可以用遞迴形式來表示,即有遞迴公式:

fibo=fibonacci(n-1)+fibonacci(n-2)

遞迴結束條件為:當n=1或n=2,fibo=1

可以構建乙個遞迴子函式int fibonacci(int n)來實現求第n項的值,主函式中呼叫該遞迴子函式。

由於遞迴是記憶體自動建立棧,所以可以這樣理解。遞迴函式先找到出口,從出口反向運算到初始條件。這就與棧表現相似。

資料結構用棧解決n皇后問題

問題描述 編寫乙個程式exp3 6.cpp,求解皇后問題 在n n的方格棋盤上,放置n個皇后,要求每個皇后不同行 不同列 不同左右對角線。要求 1 皇后的個數n由使用者輸入,其值不能超過20,輸出所有的解。2 採用類似於棧求解迷宮問題的方法。原 include include include def...

資料結構入門 棧(下)

上個文章介紹了棧的順序儲存結構,以及兩棧共享的處理方式,接下來我們開始介紹線性結構的另乙個儲存方式,鏈式儲存。如果你鍊錶運用的不夠熟練,那麼接下來的內容會帶你回顧鍊錶的基本操作,以及棧的鏈式儲存操作方法 鍊錶是由一系列結點組成,對於每個結點結構,有資料域和指標域兩個區域,資料域存放結點需要儲存的具體...

資料結構入門學習系列 1 基本資料結構

在做專案的經驗中發現資料結構與演算法基本決定了乙個程式設計師所能達到的上限,因為最新發現技術上遭遇瓶頸,無法有效提公升最終是由於資料結構與演算法的限制。所以想從頭學習一遍資料結構與演算法,該系列可以作為入門級教程。新手參考,大牛就不用浪費時間看了。首先資料結構包含以下幾種基本關係 邏輯結構 集合 資...