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

栈的实现

时间:2015-04-10 23:49:55      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

复习使用C语言实现栈

PS:其中有一个动态增加内存的方法,要注意

 1 #define STACK_INIT_SIZE 100
 2 #define STACKINCREMENT 100
 3 
 4 typedef struct{
 5     SElemType *base;
 6     SElemType *top;
 7 }SqStack;
 8 
 9 status InitStact(SqStack %S){
10     S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
11     if(!S.base)
12         exit(OVERFLOW);
13     S.top = S.base;
14     S.stacksize = STACK_INIT_SIZE;
15     return OK;
16 }
17 
18 status GetTop(SqStack S,SElemType &e){  //top元素保存在e中
19     if(S.top == S.base)
20         return ERROR;
21     e = *(S.top-1);
22     return OK;
23 }
24 
25 status Push(SqStack &S,SElemType e){
26     if(S.top - S.base >= S.stacksize){  //栈已满
27         //动态增加内存
28         S.base = (SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
29         if(!S.base)
30             exit(OVERFLOW);
31         S.top = S.base + S.stacksize;
32         S.stacksize + = STACKINCREMENT;
33     }
34     *S.top++ = e;
35     return OK;
36 }
37 
38 status Pop(SqStack &S,SElemType &e){
39     if(S.top == S.base)
40         return ERROR;
41     e = * --S.top;
42     return Ok;
43 }

 

栈的实现

标签:

原文地址:http://www.cnblogs.com/pngcui/p/4415864.html

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