2019-10-28

1.后缀表达式:运算符号位于两个运算值之后。
eg:6 2/3-4 2 *+=
从左向右扫描,当遇到运算符选左边两个最近的值进行运算
2.堆栈(stack):具有一定操作约束的线性表,只在一段(top)做插入删除
插入数据:入栈(PUSH)
删除数据:出栈(POP)
后入先出:LAST IN FIRST OUT(LIFO)
3.堆栈的操作
①Stack CreateStack( int MaxSize ): 生成空堆栈,其最大长度为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 <储存数据元素的最大个数>
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的特殊值,标志错误*/
  } else 
  return ( PtrS->Data[(PtrS->Top)--] );
}

你可能感兴趣的:(2019-10-28)