【数据结构】栈(Stack)的数组实现
Time Limit: 1 s
Memory Limit: 128 MB
Submission:336
AC:93
Score:96.29
Description
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
-----------From
百度百科
现在对希望你对于给定的Stack结构体完成以下几类操作:
1.
Status Push(SqStack *S,SElemType *e) //将e压入栈中
2.
Status Pop(SqStack *S,SElemType *e) //将栈顶元素从栈中取出
3.
Status StackTraverse(SqStack *S) //从下到上输出栈内元素
详细要求如下:
1.
对于S,将e压入栈中,成为栈顶元素
2.
对于S,将该栈中的栈顶元素取出
3.
对于S,自下向上输出栈内元素,每个元素之间用空行隔开,若栈空则输出空行
Tips:主体代码已给出,你只需要提交函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <string.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 100
typedef int Status;
typedef int SElemType;
typedef struct
{
SElemType data[MAXSIZE];
int top;
}SqStack;
Status InitStack(SqStack *S)
{
S->top = -1;
return OK;
}
Status ClearStack(SqStack *S)
{
S->top = -1;
return OK;
}
Status StackEmpty(SqStack *S)
{
if (S->top == -1)
return TRUE;
else
return FALSE;
}
int StackLength(SqStack *S)
{
return S->top + 1;
}
Status GetTop(SqStack *S, SElemType *e)
{
if (S->top == -1)
return ERROR;
else
*e = S->data[S->top];
return OK;
}
Status Push(SqStack *S, SElemType e);
Status Pop(SqStack *S, SElemType *e);
Status StackTraverse(SqStack *S);
int main()
{
SqStack s;
InitStack(&s);
int n;
scanf("%d", &n);
char ctl[10];
while (n--)
{
scanf("%s", ctl);
if (strcmp(ctl, "Push") == 0)
{
int x;
scanf("%d", &x);
Push(&s, x);
}
else if (strcmp(ctl, "Pop") == 0)
{
int x;
if (Pop(&s, &x))
printf("%d\n", x);
else printf("Error: Stack is empty!\n");
}
else if (strcmp(ctl, "ShowAll") == 0)
{
StackTraverse(&s);
}
}
ClearStack(&s);
return 0;
}
Input
根据题目要求补全函数
Samples
input
8
Push 2
Push 3
Pop
Pop
Pop
Push 4
Push 6
ShowAll
output
3
2
Error: Stack is empty!
4 6