码迷,mamicode.com
首页 > 其他好文 > 详细

栈初始化,入栈,出栈功能的实现

时间:2014-11-22 00:43:08      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   sp   on   div   2014   log   

  1 //////////////////////////////////////////////////////////
  2 // stack.cpp
  3 //
  4 // author:Leetao
  5 //////////////////////////////////////////////////////////
  6 // 简介:
  7 //   线性表的实现
  8 ////////////////////////////////////////////////////////// 
  9 /**
 10 * 栈初始化,入栈,出栈功能的实现
 11 *
 12 * @author Leetao
 13 * @version 1.0
 14 * @date 2014.11.22  
 15 */ 
 16 #include<stdio.h>
 17 #include<malloc.h>
 18 
 19 #define STACK_INIT_SIZE 100  //储存空间初试分配量 
 20 #define STACKINCREMENT 10   //储存空间分配增量 
 21 
 22 //类型宏定义,此处定义为int型 
 23 typedef  int SElem;
 24 typedef  int Status;
 25 
 26 typedef struct
 27 {
 28     SElem *base;  //在栈构造之前和销毁之后,base的值为NULL 
 29     SElem *top;   //栈顶指针
 30     int stacksize;
 31 }SqStack;
 32 
 33 //函数声明
 34 Status InitStack(SqStack &S);
 35 Status GetTop(SqStack &S,SElem &e);
 36 Status Push(SqStack &S,SElem e);
 37 Status Pop(SqStack &S,SElem &e);
 38  
 39 //栈初始化 
 40 Status InitStack(SqStack &S)
 41 {
 42     S.base=(SElem *)malloc(STACK_INIT_SIZE*sizeof(SElem));
 43     if(S.base==NULL)
 44     {
 45         printf("error!\n");
 46         return 0;
 47     }    
 48     S.top=S.base;
 49     S.stacksize=STACK_INIT_SIZE;
 50     
 51     return 0;
 52 }
 53 
 54 //返回栈顶元素 
 55 Status GetTop(SqStack &S,SElem &e)
 56 {
 57     if(S.base==S.top)
 58     {
 59         printf("the stack is null!\n");
 60         return  0;
 61     }
 62     
 63     e=*(S.top-1);
 64     
 65     return 0; 
 66 }
 67 
 68 //插入元素
 69 Status Push(SqStack &S,SElem e)
 70 {
 71     if(S.top-S.base>=S.stacksize)  //栈满,追加储存空间 
 72     {
 73         S.base=(SElem *)realloc(S.base,
 74         (S.stacksize+STACKINCREMENT)*sizeof(SElem));
 75         
 76         if(S.base==NULL)
 77         {
 78             printf("error!\n");
 79             return 0;
 80         }
 81         
 82         S.top=S.base+S.stacksize;
 83         S.stacksize+=STACKINCREMENT;
 84     }
 85     *S.top++=e;
 86     
 87     
 88     return 0;
 89 } 
 90 
 91 //删除栈顶元素
 92 Status Pop(SqStack &S,SElem &e)
 93 {
 94     if(S.top==S.base)
 95     {
 96         printf("error!\n");
 97         return 0;
 98     }    
 99     e=*(--S.top);
100     
101     return 0;
102 } 
103 
104 int main() 
105 {
106     SqStack S;
107     int n,e;
108         InitStack(S);
109         printf("输入一个非负的十进制数,打印与其等值的八进制数:\n");
110         scanf("%d",&n);
111         
112         while(n)
113         {
114             Push(S,n%8);
115             n=n/8;
116         }
117         
118         printf("最后转换结果为:\n");
119         while(S.top!=S.base)
120         {
121             Pop(S,e);
122             printf("%d",e);
123         }
124         
125     
126     return 0;
127     
128 }

栈初始化,入栈,出栈

栈初始化,入栈,出栈功能的实现

标签:style   blog   io   color   sp   on   div   2014   log   

原文地址:http://www.cnblogs.com/leetao94/p/4114506.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!