/*顺序栈的表示和实现*/
#include <malloc.h>
#include <stdlib.h>
#include <stdio.h>
#define stackinit 100
#define stackincre 10
#define overflow -2
typedef int Selemtype;
typedef struct {
Selemtype *base;
Selemtype *top;
int stacksize;
}seqstack;
int initstack(seqstack &s)
{
s.base=(Selemtype*)malloc(sizeof(Selemtype)*stackinit);
if (!s.base) return 0;
s.top=s.base;
s.stacksize=stackinit;
return 1;
}
int destroystack(seqstack &s)
{ if(s.base) free(s.base);
return 1;
}
int clearstack(seqstack &s)
{ s.top=s.base;
return 1;
}
int stackempty(seqstack s)
{
return s.top==s.base;
}
int stacklength(seqstack &s)
{
return s.top-s.base;
}
int gettop(seqstack s,Selemtype &e)
{ if (s.top==s.base) return 0;
e=*(s.top-1);
return 1;
}
int push(seqstack &s,Selemtype e)
{
if (s.top-s.base>=stackinit){
s.base =(Selemtype*)realloc(s.base ,(s.stacksize+stackincre)*sizeof(Selemtype));
if(!s.base) exit(overflow);
s.top= s.base +s.stacksize;
s.stacksize+=stackincre;
}
*(s.top++)=e;
return 1;
}
int pop(seqstack &s,Selemtype &e)
{
if (s.top==s.base) return 0;
e=*(--s.top);
return 1;
}
int stacktraverse(seqstack s,int (*visit)(Selemtype))
{ Selemtype *p;
p = s.base;
while(p!=s.top)
{
visit(*p);p++;
}
return 1;
}
int main(){
return 0;
}
堆栈的基本功能模板
最新推荐文章于 2023-07-23 19:52:40 发布