1.后綴表達(dá)式:運(yùn)算符號(hào)位于兩個(gè)運(yùn)算值之后。
eg:6 2/3-4 2 *+=
從左向右掃描拾徙,當(dāng)遇到運(yùn)算符選左邊兩個(gè)最近的值進(jìn)行運(yùn)算
2.堆棧(stack):具有一定操作約束的線性表,只在一段(top)做插入刪除
插入數(shù)據(jù):入棧(PUSH)
刪除數(shù)據(jù):出棧(POP)
后入先出:LAST IN FIRST OUT(LIFO)
3.堆棧的操作
①Stack CreateStack( int MaxSize ): 生成空堆棧,其最大長(zhǎng)度為MaxSize;
②int IsFull( Stack S, int MaxSize ):判斷堆棧S是否已滿蒿褂;
③void Push( Stack S, ElementType item ):將元素item壓入堆棧;
④int IsEmpty ( Stack S ):判斷堆棧S是否為空卒暂;
⑤ElementType Pop( Stack S ):刪除并返回棧頂元素啄栓;
4.入棧
#define MaxSize <儲(chǔ)存數(shù)據(jù)元素的最大個(gè)數(shù)>
typedef struct SNode *Stack;
struct SNode{
ElementType Data[MaxSize];
int Top;
};
void Push( Stack PtrS, ElementType item )
{
if ( PtrS->Top == MaxSize-1 ) {
printf(“堆棧滿”); return;
}else {
PtrS->Data[++(PtrS->Top)] = item;
return;
}
}
5.出棧
ElementType Pop( Stack PtrS )
{
if ( PtrS->Top == -1 ) {
printf(“堆棧空”);
return ERROR; /* ERROR是ElementType的特殊值也祠,標(biāo)志錯(cuò)誤*/
} else
return ( PtrS->Data[(PtrS->Top)--] );
}