1.棧的順序儲存結構
/*(1)編寫程式,用不同的儲存方法,實現棧的基本操作。
(2) 判斷乙個表示式中的括號(僅有一種括號,小、中或大括號)是否配對。編寫並實現它的演算法。
(3) * 若表示式中既有小括號,又有大括號(或中括號),且允許互相巢狀,但不能交叉,寫出判斷這樣的表示式是否合法的演算法。如 2+3*(4-*3) 為合法;2+3*(4- 、2+3*(4-[5+2 * 3)為不合法。*/
#include using namespace std;
templateclass seqstack
}~seqstack()
bool getresult();
bool getresult2();
public:
void push(const type item); //push data
type pop(); //pop data
type gettop() const; //get data
void print(); //print the stack
void makeempty()
//判斷是否為空
bool isempty() const
//判斷是否滿棧
bool isfull() const
private:
int top;
type *data;
int maxsize;
};templatevoid seqstack::push(const type item)
data[++top] = item;
}templatetype seqstack::pop()
return data[top--];
}templatetype seqstack::gettop() const
return data[top];
}templatevoid seqstack::print()
cout << "--->棧頂" << endl << endl << endl;
}/**
* 判斷乙個表示式中的括號(僅有一種括號,小、中或大括號)是否配對。編寫並實現它的演算法
* @tparam type
* @return
*/templatebool seqstack::getresult() else if (data[i] == ')')
}return left == right;
}templatebool seqstack::getresult2() else if (data[i] == ')' || data[i] == ']' || data[i] == '}')
}return left == right;
}int main() ;
for (int i = 0; i < 10; i++)
stack.print();
stack.push(88);
cout << stack.pop() << endl;
stack.print();
stack.makeempty();
stack.print();
stack.pop();
//判斷表示式的括號是否匹配 只含一種括號
seqstackmystack(20);
string str = "(2*(2+3))";
for (int i = 0; i < str.length(); ++i)
cout << "+++++++++++" << endl;
cout << mystack.getresult();
//判斷表示式的括號是否匹配 含有多種括號
string str2 = "2+3*(4-*3)";
string str3 = "2+3*(4-";
seqstackmystack2(str3.length());
for (int i = 0; i < str3.length(); ++i)
cout << "+++++++++++" << endl;
cout << mystack2.getresult2();
return 0;
}
2.棧的鏈結儲存結構
//棧的鏈結儲存結構及實現
#includeusing namespace std;
templatestruct node
;templateclass linkstack
;templatelinkstack::linkstack()
templatevoid linkstack::push(datatype x)
templatedatatype linkstack::pop()
template datatype linkstack::gettop()
templateint linkstack::empty()
int main()
while(l1.empty()!=1)
cout
}
棧的實現及應用
1.棧定義 棧又稱堆疊,是一種運算受限的線性表,限制是僅僅允許在表的另外一端進行插入和刪除運算。2.特點 後進先出 cpu快取利用率相對較高 不允許隨意訪問 3.實現方式 棧有兩種實現方式,一種是順序儲存,和陣列類似。一種是鏈式儲存,和單鏈表類似。這是在2013編譯器下 棧裡面有以下幾種函式 voi...
Python實現棧,及棧的應用例項
棧 stack 是限定在表尾進行插入或刪除操作的線性表。因此,對於棧來說,表尾端有其特殊含義,稱為棧頂 top 表頭被稱為棧底 bottom 構造空棧 def init self,size self.size size self.stack 輸出棧 def str self return str s...
棧的定義及基本演算法實現
棧定義 是一種只能在一端進行插入或刪除操作的線性表 1 允許 進行插入 刪除操作的一端稱為 棧 頂 2 表的另一端稱為 棧底 3 當棧中沒有資料元素時 稱為 空棧 4 棧的插入操作通常稱為 進棧 或 入 棧 5 棧的刪除操作通常稱為 退棧 或 出棧 例如 死胡同就是乙個棧 洗1疊碗時的取放 棧據有先...