源代码:
#include <stdio.h>
#include <stdlib.h>
//程序目的:利用数组模拟栈
typedef struct {
int data[10];
int top;
} Stack;
void Init(Stack *p) {
p->top = 0;
return;
}
int not_empty(Stack *p) {
return p->top;
}
int Push(Stack *p, int a) {
if (p->top == 10)
return 0;
else {
p->data[p->top] = a;
p->top++;
return 1;
}
}
int Pop(Stack *p, int *a) {
if (p->data == 0)
return 0;
else {
p->top--;
*a = p->data[p->top];
return 1;
}
}
int Top(Stack *p, int *a) {
if (p->data == 0)
return 0;
else {
*a = p->data[p->top-1];
return 1;
}
}
int main() {
Stack p;
int a,b,i;
Init(&p);
while (1) {
printf("\n1.Input a stack data\n");
printf("\n2.Output a stack data\n");
printf("\n3.Exit\n");
printf("Please select one->");
scanf("%d",&a);
if (a == 3)
break;
switch(a) {
case 1:
printf("\nPlease input the data->");
scanf("%d",&b);
if (Push(&p, b)) {
printf("\nthe elements are:\n");
for (i=0; i<p.top; i++)
printf("%d ",p.data[i]);
}
else
printf("Stack is full\n");
break;
case 2:
if (Pop(&p, &b)) {
printf("\nthe elements are:\n");
for(i=0; i<p.top; i++)
printf("%d ", p.data[i]);
}
else
printf("\nStack is empty\n");
break;
}
}
return 0;
}
运行结果: