一、字尾表示式求法
例:562/+34*-
中綴表示式:5+6/2-3*4=-4
進行運算的時候先拿出來數的放運算子右邊,後拿出來的放運算子左邊
二、棧的順序儲存實現
1、定義宣告
typedef
struct snode *stack;
struct snode
;
2.順序棧的建立stack createstack()
3、入棧void
push
(stack ptrs,elementype item)
}
4、出棧elementype pop
(stack ptrs)
三、棧的順序儲存實現(乙個陣列實現兩個堆疊)
1、定義宣告和初始化top1,top2
typedef
struct snode *stack;
struct snode
;stack.top1=-1
;stack.top2=maxsize;
2、入棧bool push
(stack s,elemettype x,
int tag)
//tag控制對第幾個堆疊操作
else
else
return true;
}}
3、出棧elementype pop
(stack s,
int tag)
else
}
四、棧的鏈式儲存實現
使用鍊錶實現時,插入和刪除操作只能在鍊錶的頭部進行,棧頂指標top就是鍊錶的頭指標。如果在鍊錶的尾部進行,插入時沒有問題,可以連線乙個新結點。如果刪除,刪除後不知道前乙個結點是誰,再進行插入時就不知道向哪插入。
1、宣告定義:
typedef
struct snode *stack;
struct snode
;
2、建立乙個堆疊的頭結點
stack creatstack()
3、判斷堆疊是否為空bool isempty
(stack s)
4、入棧bool push
(stack s,elementype x)
//插入的時候總是向頭結點後插入
5、出棧elementype pop
(stack s)
else
return back;
}
線性結構 線性表常用操作
線性表常用操作 順序儲存,鏈式儲存 順序儲存的優點 1.根據位序查詢和求線性表長度比較簡單 2.容易理解 鏈式儲存優點 1.節省空間 一 順序儲存實現 1.宣告定義 include include typedef int position typedef int elementtype typede...
常用堆疊操作
入棧 void push struct listnode head,int val else cur next pushnode 出棧,棧為空則返回false 否則為true,同時將值放入val bool pop struct listnode head,int val else val cur v...
線性結構 堆疊和佇列
中綴表示式 表示式中運算子放在中間 字尾表示式 表示式中運算子放在後面堆疊 具有一定操作約束的線性表。只有一端 棧頂,top 做插入與刪除 插入資料叫 如棧 push 刪除資料叫 出棧 pop 特點 後入先出 lifo棧的順序儲存結構通常由乙個一位陣列和乙個記錄棧頂元素位置的變數組成堆疊的鍊錶儲存實...