2017-3-21 上课写的
#include<stdio.h>
#include<stdlib.h>
#define FIST 100
#define TWO 10
typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack;
//函数定义.......................
int InitStack(SqStack &S);
int StackLength(SqStack S);
int GetTop(SqStack S,int &e);
int Push(SqStack &S,int e);
int Pop(SqStack &S,int &e);
int shownumbers(SqStack S);
//函数实现.........................
int InitStack(SqStack &S)
{
S.base = (int *)malloc(FIST * sizeof(int));
if(!S.base)
exit(-1);
S.top = S.base;
S.stacksize = FIST;
return 1;
}
int StackLength(SqStack S)
{
if(S.top == S.base)
return 0;
return S.stacksize;
}
int GetTop(SqStack S,int &e)
{
if(S.top == S.base)
return 0;
e = *(S.top -1);
return 1;
}
int Push(SqStack &S,int e)
{
if(S.top -S.base >= S.stacksize)
{
S.base = (int *)realloc(S.base,(S.stacksize + FIST)* sizeof(int));
if(!S.base)
exit(-1);
S.top = S.base + S.stacksize;
S.stacksize += FIST;
}
* S.top++ = e;
return 1;
}
int Pop(SqStack &S,int &e)
{
if(S.top == S.base)
return 0;
e = *--S.top;
return 1;
}
int shownumbers(SqStack S)
{
// int i;
S.top--;
// for(i=0;i<n;i++)
// {
while(1)
{
if(S.top < S.base)
{
printf("\n已经到栈底\n");
return 0;
// break;
}
printf("%-4d",*S.top);
S.top--;
}
// }
return 1;
}
//驱动函数............
int main()
{
SqStack S;
int e;
int n;
InitStack(S);
printf("请输入插入元素的个数:\n");
scanf("%d",&n);
printf("请输入插入的元素:\n");
for(int i=0;i<n;i++)
{
scanf("%d",&e);
Push(S,e);
}
shownumbers(S);
printf("\n");
printf("测试GetTOP,返回栈顶元素:\n");
GetTop(S,e);
printf("%d\n",e);
printf("测试删除栈顶元素函数:\n");
Pop(S,e);
printf("删除的栈顶元素是:%d\n",e);
shownumbers(S);
return 0;
}