#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXLEN 4
typedef struct
{
char name[10];
int age;
}DATA;
typedef struct stack
{
DATA data[MAXLEN + 1];
int top;
}StackType;
StackType *STInit()
{
StackType *p;
if (p = (StackType*)malloc(sizeof(StackType)))
{
p->top = 0;
return p;
}
return NULL;
}
int STIsEmpty(StackType *s)
{
int t;
t = (s->top == 0);
return t;
}
int STIsFull(StackType *s)
{
int t;
t = (s->top == MAXLEN);
return t;
}
void STClear(StackType *s)
{
s->top = 0;
}
void STFree(StackType *s)
{
if (s)
{
free(s);
}
}
int PushST(StackType *s, DATA data)
{
if (s->top >= MAXLEN)
{
printf("栈溢出!\n");
return 0;
}
else
{
s->data[++s->top] = data;
}
return 0;
}
DATA PopST(StackType *s)
{
if (s->top == 0)
{
printf("栈为空!\n");
exit(0);
}
return (s->data[s->top--]);
}
DATA PeakST(StackType *s)
{
if (s->top == 0)
{
printf("栈为空!\n");
exit(0);
}
return (s->data[s->top]);
}
void main()
{
StackType *stack;
DATA data, data1;
stack = STInit();
printf("入栈操作:\n");
do
{
scanf("%s%d", data.name, &data.age);
if (strcmp(data.name, "0") == 0)
{
break;
}
else
{
PushST(stack, data);
}
} while (1);
do{
printf("\n出栈操作:按任意键进行出栈操作:");
getchar();
data1 = PopST(stack);
printf("出栈的数据是(%s,%d)\n", data1.name, data1.age);
} while (1);
STFree(stack);
system("pause");
}
栈
最新推荐文章于 2022-04-22 23:43:58 发布