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

Posted lzdxh027

tags:

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

  1. typedef struct SNode *PtrToSNode;
  2. struct SNode 
  3.     ElementType Data;
  4.     PtrToSNode Next;
  5. ;
  6. typedef PtrToSNode Stack;
  7.  
  8. Stack CreateStack( ) 
  9.  /* 构建一个堆栈的头结点,返回该结点指针 */
  10.     Stack S;
  11.  
  12.     S = (Stack)malloc(sizeof(struct SNode));
  13.     S->Next = NULL;
  14.     return S;
  15.  
  16. bool IsEmpty ( Stack S )
  17.  /* 判断堆栈S是否为空,若是返回true;否则返回false */
  18.     return ( S->Next == NULL );
  19.  
  20. bool Push( Stack S, ElementType X )
  21.  /* 将元素X压入堆栈S */
  22.     PtrToSNode TmpCell;
  23.  
  24.     TmpCell = (PtrToSNode)malloc(sizeof(struct SNode));
  25.     TmpCell->Data = X;
  26.     TmpCell->Next = S->Next;
  27.     S->Next = TmpCell;
  28.     return true;
  29.  
  30. ElementType Pop( Stack S )  
  31.  /* 删除并返回堆栈S的栈顶元素 */
  32.     PtrToSNode FirstCell;
  33.     ElementType TopElem;
  34.  
  35.     if( IsEmpty(S) ) 
  36.         printf("堆栈空"); 
  37.         return ERROR;
  38.     
  39.     else 
  40.         FirstCell = S->Next; 
  41.         TopElem = FirstCell->Data;
  42.         S->Next = FirstCell->Next;
  43.         free(FirstCell);
  44.         return TopElem;
  45.     

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

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

线性表--堆栈

线性表--堆栈

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

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

栈的顺序存储和链式存储