1.完整代码
#include<iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int SElemType;
typedef int Status;
typedef struct StackNode{
SElemType data;
struct StackNode *next;
}StackNode, *LinkStack;
Status InitStack(LinkStack &S)
{
S = NULL;
return OK;
}
Status StackEmpty(LinkStack S)
{
if ( S == NULL )
return TRUE;
else
return FALSE;
}
Status Push(LinkStack &S, SElemType e)
{
LinkStack p = new StackNode;
p->data = e;
p->next = S;
S = p;
return OK;
}
Status Pop(LinkStack &S, SElemType &e)
{
if ( S == NULL )
return ERROR;
e = S->data;
LinkStack p = S;
S = S->next;
delete p;
return OK;
}
bool GetTop(LinkStack &S,SElemType &e)
{
if ( S == NULL )
return false;
e=S->data;
return true;
}
void Push_To_Stack(LinkStack &S)
{
int n;
SElemType e;
int flag;
printf("请输入入栈元素个数(>=1):\n");
scanf("%d",&n);
printf("请输入栈中各元素的值: ");
for(int i=0;i<n;i++)
{
scanf("%d",&e);
flag=Push(S,e);
if(flag)
printf("%d已入栈\n",e);
}
}
void Pop_From_Stack(LinkStack &S)
{
int n;
SElemType e;
int flag;
printf("请输入出栈元素个数(>=1):\n");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
flag=Pop(S,e);
if(flag)
printf("%d已出栈\n",e);
else
{
printf("栈已空!!!\n");
break;
}
}
}
void Get_Top_Of_Stack(LinkStack S)
{
SElemType e;
bool flag;
flag=GetTop(S,e);
if(flag)
printf("栈顶元素为:%d\n",e);
else
printf("栈已空!!!\n");
}
int main()
{
LinkStack S;
InitStack(S);
Push_To_Stack(S);
Get_Top_Of_Stack(S);
Pop_From_Stack(S);
return 0;
}
2.结果测试
