前言
 创建一个顺序栈实现对顺序栈内元素的
 ——入栈
 ——出栈
 ——遍历顺序栈
 
More info: sequenceStack
构造顺序栈(sequenceStack)
构造顺序栈记录参数(顺序栈的栈底地址 顺序栈的容量 顺序栈的栈顶元素的下标)
1 2 3 4 5 6 7
   |  typedef int dataType_t; typedef struct sequenceStack {     dataType_t *Bottom;            unsigned int size;           int Top;                } sqStack_t;
 
  | 
 
创建顺序栈并对顺序栈进行初始化(sqStack_Create)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
   | sqStack_t *sqStack_Create(unsigned int size) {          sqStack_t *manager = (sqStack_t*)calloc(1,sizeof (sqStack_t));
      if(NULL == manager)     {         perror("calloc memory for manager is failed");         exit(-1);            }
           manager->Bottom = (dataType_t*)calloc(size,sizeof(dataType_t));
      if(NULL == manager->Bottom)     {         perror("calloc memory for element is failed");         free(manager);           exit(-1);            }
           manager->size = size;      manager->Top = -1;   
      return manager; }
   | 
 
判断顺序栈是否以满(sqStack_IsFull)
1 2 3 4 5 6 7 8 9 10
   |  bool sqStack_IsFull(sqStack_t *manager) {     return (manager->Top+1 == manager->size) ? true : false;
 
 
 
 
  }
 
  | 
 
入栈(sqStack_Push)
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
   | bool sqStack_Push (sqStack_t *manager,dataType_t data) {          if(sqStack_IsFull(manager))     {         printf("sequenceStack is Full!\n");         return false;     }
      
 
      manager->Bottom[++manager->Top] = data;     return true; }
   | 
 
判断顺序栈是否为空(sqStack_IsEmpty)
1 2 3 4
   | bool sqStack_IsEmpty(sqStack_t *manager) {     return (manager->Top == -1) ? true : false; }
   | 
 
出栈(sqStack_Pop)
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | dataType_t sqStack_Pop (sqStack_t *manager) {     dataType_t temp=-1;     
           if(sqStack_IsEmpty(manager))     {         printf("SequenceStack is Empty!\n");         return -1;     }
           temp = manager->Bottom[manager->Top--];     return temp;
       }
   | 
 
遍历顺序栈(sqStack_print)
1 2 3 4 5 6 7 8
   |  void sqStack_print (sqStack_t *manager) {     for(int i=0;i<=manager->Top;i++)     {         printf("Element[%d]=%d\n",i,manager->Bottom[i]);     } }
 
  | 
 
main主程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
   | int main() {
           sqStack_t *manager = sqStack_Create(10);
           sqStack_Push (manager,5);     sqStack_Push (manager,2);     sqStack_Push (manager,1);     sqStack_Push (manager,4);     sqStack_Push (manager,6);     sqStack_Push (manager,8);
           sqStack_print (manager);          printf("\n");
           dataType_t temp1,temp2,temp3,temp4;          temp1 = sqStack_Pop (manager);     printf(" 出栈:%d ",temp1);
      temp2 = sqStack_Pop (manager);     printf(" 出栈:%d ",temp2);
      temp3 = sqStack_Pop (manager);     printf(" 出栈:%d ",temp3);
      temp4 = sqStack_Pop (manager);     printf(" 出栈:%d\n",temp4);
           sqStack_print (manager);          printf("\n");
      return 0; }
   | 
 
结果验证
1 2 3 4 5 6 7 8 9 10 11 12 13
   | Element[0]=5 Element[1]=2 Element[2]=1 Element[3]=4 Element[4]=6 Element[5]=8
   出栈:8  出栈:6  出栈:4  出栈:1 Element[0]=5 Element[1]=2
 
  进程已结束,退出代码0
   | 
 
汇总
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
   | #include <stdio.h> #include <stdbool.h> #include <stdlib.h>
 
  typedef int dataType_t;
 
  typedef struct sequenceStack {     dataType_t *Bottom;            unsigned int size;           int Top;                } sqStack_t;
 
  sqStack_t *sqStack_Create(unsigned int size) {          sqStack_t *manager = (sqStack_t*)calloc(1,sizeof (manager));
      if(NULL == manager)     {         perror("calloc memory for manager is failed");         exit(-1);            }
           manager->Bottom = (dataType_t*)calloc(size,sizeof(dataType_t));
      if(NULL == manager->Bottom)     {         perror("calloc memory for element is failed");         free(manager);           exit(-1);            }
           manager->size = size;      manager->Top = -1;   
      return manager; }
 
  bool sqStack_IsFull(sqStack_t *manager) {     return (manager->Top+1 == manager->size) ? true : false;
 
 
 
 
  }
 
  bool sqStack_Push (sqStack_t *manager,dataType_t data) {          if(sqStack_IsFull(manager))     {         printf("sequenceStack is Full!\n");         return false;     }
      
 
      manager->Bottom[++manager->Top] = data;     return true; }
 
  bool sqStack_IsEmpty(sqStack_t *manager) {     return (manager->Top == -1) ? true : false; }
 
  dataType_t sqStack_Pop (sqStack_t *manager) {     dataType_t temp=-1;     
           if(sqStack_IsEmpty(manager))     {         printf("SequenceStack is Empty!\n");         return -1;     }
           temp = manager->Bottom[manager->Top--];     return temp;
       }
 
  void sqStack_print (sqStack_t *manager) {     for(int i=0;i<=manager->Top;i++)     {         printf("Element[%d]=%d\n",i,manager->Bottom[i]);     } }
  int main() {
           sqStack_t *manager = sqStack_Create(10);
           sqStack_Push (manager,5);     sqStack_Push (manager,2);     sqStack_Push (manager,1);     sqStack_Push (manager,4);     sqStack_Push (manager,6);     sqStack_Push (manager,8);
           sqStack_print (manager);          printf("\n");
           dataType_t temp1,temp2,temp3,temp4;          temp1 = sqStack_Pop (manager);     printf(" 出栈:%d ",temp1);
      temp2 = sqStack_Pop (manager);     printf(" 出栈:%d ",temp2);
      temp3 = sqStack_Pop (manager);     printf(" 出栈:%d ",temp3);
      temp4 = sqStack_Pop (manager);     printf(" 出栈:%d\n",temp4);
           sqStack_print (manager);          printf("\n");
      return 0; }
   |