//顺序表实现栈的简单功能
#include <stdio.h>
#define ERROR 0
#define OK 1
#define MAXSIZE 100
typedef int SElemType;
typedef int Status;
typedef struct
{
SElemType data[MAXSIZE];
int top;
} SqStack;
Status InitStack(SqStack *s);
void traversal(SqStack s);
void display();
Status push(SqStack *s,SElemType e);
Status pop(SqStack *s,SElemType *e);
int main()
{
display();
return 0;
}
void display()
{
SqStack s;
InitStack(&s);
SElemType e;
int select;
printf("1.初始化\n");
printf("2.插入\n");
printf("3.删除\n");
printf("4.遍历\n");
printf("5.退出\n");
while(1)
{
printf("请输入想要执行的功能:");
scanf("%d",&select);
switch(select)
{
case 1:
InitStack(&s);
break;
case 2:
printf("请输入要插入的整数;");
scanf("%d",&e);
push(&s,e);
traversal(s);
break;
case 3:
if(pop(&s,&e)==0)
printf("栈已空");
else
printf("出栈的元素是:%d\n",e);
printf("剩余元素是:");
traversal(s);
break;
case 4:
traversal(s);
break;
case 5:
return;
}
}
}
//初始化
Status InitStack(SqStack *s)
{
s->top=-1;
return OK;
}
//入栈
Status push(SqStack *s,SElemType e)
{
if(s->top==MAXSIZE-1)
return ERROR;
s->top++;
s->data[s->top]=e;
return OK;
}
//遍历
void traversal(SqStack s)
{
int i=0;
for ( i = 0; i <= s.top; i++)
{
printf("%d ", s.data[i]);
}
printf("\n");
}
//弹出栈顶元素
Status pop(SqStack *s,SElemType *e)
{
if(s->top==-1)
return ERROR;
*e=s->data[s->top];
s->top--;
return OK;
}
#include <stdio.h>
#define ERROR 0
#define OK 1
#define MAXSIZE 100
typedef int SElemType;
typedef int Status;
typedef struct
{
SElemType data[MAXSIZE];
int top;
} SqStack;
Status InitStack(SqStack *s);
void traversal(SqStack s);
void display();
Status push(SqStack *s,SElemType e);
Status pop(SqStack *s,SElemType *e);
int main()
{
display();
return 0;
}
void display()
{
SqStack s;
InitStack(&s);
SElemType e;
int select;
printf("1.初始化\n");
printf("2.插入\n");
printf("3.删除\n");
printf("4.遍历\n");
printf("5.退出\n");
while(1)
{
printf("请输入想要执行的功能:");
scanf("%d",&select);
switch(select)
{
case 1:
InitStack(&s);
break;
case 2:
printf("请输入要插入的整数;");
scanf("%d",&e);
push(&s,e);
traversal(s);
break;
case 3:
if(pop(&s,&e)==0)
printf("栈已空");
else
printf("出栈的元素是:%d\n",e);
printf("剩余元素是:");
traversal(s);
break;
case 4:
traversal(s);
break;
case 5:
return;
}
}
}
//初始化
Status InitStack(SqStack *s)
{
s->top=-1;
return OK;
}
//入栈
Status push(SqStack *s,SElemType e)
{
if(s->top==MAXSIZE-1)
return ERROR;
s->top++;
s->data[s->top]=e;
return OK;
}
//遍历
void traversal(SqStack s)
{
int i=0;
for ( i = 0; i <= s.top; i++)
{
printf("%d ", s.data[i]);
}
printf("\n");
}
//弹出栈顶元素
Status pop(SqStack *s,SElemType *e)
{
if(s->top==-1)
return ERROR;
*e=s->data[s->top];
s->top--;
return OK;
}