您的位置:首页 > 其它

创建一个栈存储结构,并且写入一些对栈的基本的操作

2016-04-30 09:53 302 查看
什么是栈:简单的说就是一个容器,一个瓶子,我们向瓶子里面放糖果,当想吃糖果的时候,将瓶子里的糖果再倒出来。我们要实现的就是怎样创建一个瓶子,并且怎样很容易的向里面添加糖果,向吃糖果的时候可以拿出来,自然我们拿出来的糖果是瓶子上面的糖果,也就是最后放进去的糖果。

我们继续想:要模拟这样的一个瓶子,我们需要几个变量,简单点,我们需要知道瓶子的高度,瓶子盖子,和瓶子底部。这样我们就可以很形象的描述出一个瓶子。

typedef struct{SElemType *base; SElemType *Top; int stackSize;}SqStack;

其中SElemType就是我们向瓶子里面放的糖果。上面进行的是对瓶子的一个描述,然而瓶子并未出现,怎样来让瓶子出现,一个我们能够“碰的到”瓶子,一个可以让我操作的瓶子。

int InitStack(SqStack *S)

{

S->base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));

if(!S->base) return 0;

S->top=S->base;

S->stackSize=0;

return 1;

}

上面就是初始化一个栈,也就是我们的瓶子出现了。现在我们需要做的是向瓶子里面添加糖果

int Push(SqStack *S,SElemType e)

{

//你可以不断的输入,改变e的值,然后调用这个函数,就可以实现向栈中插入数据元素

if(S->top-S->base>=S->stackSize)

{

S->base=(SElemType *)realloc(S->base,(S->stackSize+STACKINCREMENT)*sizeof(SElemType));

if(!S->base) exit(OVERFLOW);

S->top=S->base+S->stackSize;

S->stackSize=S->stackSize+STACKINCREMENT;

}

*S->top++=e;

return OK;

}

//然后我们需要做的是,可以删除栈顶的元素,并且将栈顶元素存储到e中

int Pop(SqStack *S,SElemType e)

{

if(S->top==S->base)

return ERRIR;

e=*(--S->top);

return OK;

}

//获取栈顶的元素

int getTop(SqStack *S,SElemType e)

{

if(S->base==S->top)

return ERROR;

e=*(S->top-1);

return OK;

}

//遍历栈中的元素

int goEveryElem(SqStack *S)

{

if(S->top==S->base)

return ERROR;

int length=S->top-S->base;

int i=0;

S->top=S->base;

for(S->top,i;i<=length;i++,S->top++)

{

cout<<*(S->top);

}

}

上面就是对栈的一个基本的了解,当然还有很多对栈的操作,这个地方也就不一一的叙述,在下面的文章中将会继续 的讲解栈的一些应用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: