栈的主要特性是先进后出。在栈顶对栈进行操作。
// 栈的顺序存储.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#define SIZE 10
#define NEWSIZE 5
struct stack
{
int *element;
int top;
int stackLength;
};
void initStack(stack *s)
{
s->element=(int*)malloc(SIZE*sizeof(int));
s->top=-1;
s->stackLength=SIZE;
}
void push(stack *s,int e)
{
if(s->top>s->stackLength-1)
{
int *newspace=(int*)realloc(s->element,(s->stackLength+NEWSIZE)*sizeof(int));
s->element=newspace;
}
s->element[++s->top]=e;
}
int pop(stack *s)
{
if(s->top>=0)
return s->element[s->top--];
return -1;
}
int _tmain(int argc, _TCHAR* argv[])
{
stack s;
initStack(&s);
/*for(int i=0;i<s.stackLength+5;i++)
{
int e;
cin>>e;
push(&s,e);
}
for(int i=0;i<s.stackLength;i++)
cout<<pop(&s)<<endl;*/
push(&s,1);
push(&s,2);
push(&s,3);
cout<<pop(&s);
cout<<pop(&s);
return 0;
}