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

顺序栈

时间:2016-08-06 17:26:54      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

1.类型定义:

技术分享
typedef int ElemType;
typedef struct{
  ElemType *elem;
  int top;
  int size;
  int increment;
  }SqStack;
View Code

调用:SqStack S;

栈窗口:

技术分享

2.初始化:

技术分享
//初始化顺序栈
Status InitStack_Sq(SqStack &S,int size,int inc){
  S.elem=(ElemType*)malloc(size*sizeof(ElemType));
  if(S.elem==NULL)return OVERFLOW;
  S.top=0;//置S为空栈
  S.size=size;
  S.increment=inc;
  return OK;
  }
View Code

调用:InitStack_Sq(S,10,5);

栈窗口:

技术分享

对应分配的存储空间:

技术分享

3.入栈

技术分享
//顺序栈元素入栈
Status Push_Sq(SqStack &S,ElemType e){
  ElemType *newbase;
  if(S.top>=S.size){
    newbase=(ElemType*)realloc(S.elem,(S.size+S.increment)*sizeof(ElemType));
    if(newbase==NULL)return OVERFLOW;
    S.elem=newbase;
    S.size+=S.increment;
  }
  S.elem[S.top++]=e;
  return OK;
  }
View Code

调用:

技术分享
1 int a[12]={2,3,6,9,8,7,4,0,5,1,41,45};
2   for(int i=0;i<12;i++){
3     Push_Sq(S,a[i]);
4     }
View Code

 

栈窗口:

技术分享此时i=0未把元素压入栈

当把S.size个元素压入栈后:                   存储单元变化:

技术分享                技术分享      

当压入个数大于S.size后

技术分享               技术分享

4.销毁:

技术分享
1 //销毁顺序栈
2 Status DestroyStack_Sq(SqStack &S){  
3   free(S.elem);
4   S.elem==NULL;
5   printf("顺序栈已销毁\n");
6   }
View Code

 调用:DestroyStack_Sq(S);

顺序栈

标签:

原文地址:http://www.cnblogs.com/saimeco/p/5141335.html

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