栈(stark)

后进先出(last-in first-out, LIFO)的线性集合,只能在一端(称为栈顶(top))对数据项进行插入和删除,从栈放入项和从栈删除项的操作分别叫作压入(push)和弹出(pop)
stack1.jpg

栈的顺序存储实现

栈的顺序存储结构通常由一个一维数组和一个纪录栈顶元素位置的变量组成

  1. # def MaxSize <存储数据元素的最大个数>
  2. typedef struct SNode *Stack;
  3. struct SNode{
  4. ElementType Data[MaxSize];
  5. int Top;
  6. }
  7. # 入栈
  8. void Push(Stack PtrS, ElementType item)
  9. {
  10. if(PtrS->Top == MaxSize - 1{
  11. printf("堆栈满"); return;
  12. }
  13. else{
  14. PtrS->Data[++(Ptrs->Top)] = item;
  15. return;
  16. }
  17. }
  18. # 出栈
  19. ElementType Pop(Stack PtrS)
  20. {
  21. if(Ptrs->Top == -1){
  22. printf("堆栈空");
  23. return ERROR;
  24. }
  25. else{
  26. return(PtrS->Data[(PtrS->Top)--]);
  27. }
  28. }