表 棧和佇列

2022-02-07 09:52:47 字數 1555 閱讀 6363

表、棧和佇列是最簡單和最基本的三種資料結構——《資料結構與演算法分析—— c 語言描述》

應用範疇

i. 多項式 adt

i. 基數排序(多趟桶式排序)

**實現:

i. 多重表

鍊錶的游標實現

**實現: 

棧又叫做 lifo(後進先出)表——《資料結構與演算法分析—— c 語言描述》

應用範疇:

i. 平衡符號

i. 字尾表示式

有中綴表示式 s1 :  ((2 + 3)* 8 + 5 + 3)* 6

總能轉換成字尾表示式 s2 :  2 3 + 8 * 5 + 3 + 6 * 

編寫程式計算字尾表示式 s2 的值,**實現:

#include #include 

#include

#include

#include

using

namespace

std;

class

calculatepostfix

else

sk.push(atoi(s.c_str()));

}return

sk.top();

}private

:

bool isoperator(string c) const

int calculate(const

string &s, const

int lhs, const

int rhs) const

stack

sk;};int

main()

view code

i. 中綴到字尾的轉換

有中綴表示式 s1 :  ((2 + 3)* 8 + 5 + 3)* 6

編寫程式轉換成字尾表示式,**實現:

#include #include 

#include

#include

using

namespace

std;

class

infix2postfix

switch

(isoperator(c))

}while (!sk.empty())

return

output;

}private

:

void popwhilelow(const

intop)

if (sk.top() != "("

)

}void

popwhilenoleftbracket()

sk.pop();

}int isoperator(const

string &s) const

stack

sk;string

output;

};int

main()

view code

i. 函式呼叫

表 棧和佇列

形如 a1,a2,a3 an 的表,這個表的大小為 n,而大小為 0的表稱為空表,非空表中,ai 1 後繼ai ai 1 前驅ai 表adt 的相關操有 printlist 列印表中的元素 createempty 建立乙個空表 find 返回關鍵字首次出現的位置 insert 和delete 從表的...

表,棧和佇列

對錶的所有操作都可以使用陣列來實現。雖然陣列是靜態分配的,但是內部儲存陣列的ve ctor 類允許在需要時的時候將陣列的大小增加一倍。這解決了使用陣列是需要對錶的大小的最大值進行估計的問題。陣列實現使得pr intl ist 以線性時間執行,而fi ndkt h 則花費常數時間。然而,插入和刪除的花...

鍊錶,棧和佇列

1.建立鍊錶 package com.zzw.鍊錶 非常基本的單項鍊表 author john public class node 新增乙個結點 node end new node d node n this while n.next null n.next end 刪除單向鍊錶中的結點 node ...