堆栈顺序存储的定义与操作

Posted lzdxh027

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆栈顺序存储的定义与操作相关的知识,希望对你有一定的参考价值。

  1. typedef int Position;
  2. struct SNode 
  3.     ElementType *Data; /* 存储元素的数组 */
  4.     Position Top;      /* 栈顶指针 */
  5.     int MaxSize;       /* 堆栈最大容量 */
  6. ;
  7. typedef struct SNode *Stack;
  8.  
  9. Stack CreateStack( int MaxSize )
  10.     Stack S = (Stack)malloc(sizeof(struct SNode));
  11.     S->Data = (ElementType *)malloc(MaxSize * sizeof(ElementType));
  12.     S->Top = -1;
  13.     S->MaxSize = MaxSize;
  14.     return S;
  15.  
  16. bool IsFull( Stack S )
  17.     return (S->Top == S->MaxSize-1);
  18.  
  19. bool Push( Stack S, ElementType X )
  20.     if ( IsFull(S) ) 
  21.         printf("堆栈满");
  22.         return false;
  23.     
  24.     else 
  25.         S->Data[++(S->Top)] = X;
  26.         return true;
  27.     
  28.  
  29. bool IsEmpty( Stack S )
  30.     return (S->Top == -1);
  31.  
  32. ElementType Pop( Stack S )
  33.     if ( IsEmpty(S) ) 
  34.         printf("堆栈空");
  35.         return ERROR; /* ERROR是ElementType的特殊值,标志错误 */
  36.     
  37.     else 
  38.         return ( S->Data[(S->Top)--] );

以上是关于堆栈顺序存储的定义与操作的主要内容,如果未能解决你的问题,请参考以下文章

堆栈顺序链式存储的定义与操作

堆栈的定义和两种存储结构下堆栈的基本操作

线性表--堆栈

线性表--堆栈

队列的定义与操作——顺序存储和链式存储

队列的定义与操作-顺序存储,链式存储(C语言)