parent
375e0264af
commit
9a48d5cadc
@ -0,0 +1,67 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#define StackSize 100
|
||||
typedef char DataType;
|
||||
typedef struct {
|
||||
DataType data[StackSize];
|
||||
int top;
|
||||
} SeqStack;
|
||||
|
||||
|
||||
//置空栈
|
||||
void initStack(SeqStack *S) {
|
||||
S->top = -1;
|
||||
}
|
||||
|
||||
//判栈空
|
||||
int stackEmpty(SeqStack *S) {
|
||||
return S->top == -1;
|
||||
}
|
||||
|
||||
//判栈满
|
||||
int stackFull(SeqStack *S) {
|
||||
return S->top == StackSize - 1;
|
||||
}
|
||||
|
||||
//进栈(入栈)
|
||||
void push(SeqStack *S, DataType x) {
|
||||
if (stackFull(S)) {
|
||||
} else {
|
||||
S->top = S->top + 1;
|
||||
S->data[S->top] = x;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//退栈(出栈)
|
||||
|
||||
DataType pop(SeqStack *S) {
|
||||
if (stackEmpty(S)) {
|
||||
printf("stack underflow");
|
||||
exit(0);
|
||||
} else {
|
||||
return S->data[S->top--];
|
||||
}
|
||||
}
|
||||
|
||||
//取栈顶元素
|
||||
DataType getTop(SeqStack *S) {
|
||||
if (stackEmpty(S)) {
|
||||
printf("stack empty");
|
||||
exit(0);
|
||||
} else {
|
||||
return S->data[S->top];
|
||||
}
|
||||
}
|
||||
|
||||
// 遍历并输出栈中的所有元素
|
||||
void printStack(SeqStack *S) {
|
||||
int i;
|
||||
printf("top = %d\n",S->top);
|
||||
printf("Stack contents: ");
|
||||
for (i = S->top; i >= 0; i--) {
|
||||
printf("%c", S->data[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
}
|
Loading…
Reference in new issue