線性結構 堆疊常用操作

2021-09-22 08:09:09 字數 1604 閱讀 8510

一、字尾表示式求法

例: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棧的順序儲存結構通常由乙個一位陣列和乙個記錄棧頂元素位置的變數組成堆疊的鍊錶儲存實...