#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Maxsize 50
//顺序栈
typedef struct stack
{
char data[Maxsize];
int top;
}stack;
void Init_stack(stack * s) //初始化
{
s->top=-1;
}
short empty_stack(stack * s)
{
if(s->top==-1)
return 1; //栈空
else
return 0;
}
void push_stack(stack * s, char str)
{
if(s->top==Maxsize-1)
return;
else
{
s->top++;
s->data[s->top]=str;
}
}
char pop_stack(stack * s, char * x)
{
if(!empty_stack(s)) //栈空
{
*x=s->data[s->top];
s->top--;
}
return *x;
printf("\n");
}
void printf_stack(stack s)
{
while(!empty_stack(&s))
{
printf("%c", s.data[s.top]);
s.top--;
}
printf("\n");
}
int len_stack(stack s)
{
return s.top+1;
}
char gettop_stack(stack s)
{
if(empty_stack(&s))
return ;
else
return s.data[s.top];
}
int main()
{
stack S;
int i; char x;
char str[10]="ABCDE";
Init_stack(&S);
printf("将字符串'ABCDE'入栈:");
for(i=0; i<strlen(str); i++)
{
push_stack(&S, str[i]);
}
printf("\n");
printf("打印栈:");
printf_stack(S);
printf("栈长度:%d\n", len_stack(S));
printf("打印栈顶元素:%c\n", gettop_stack(S));
printf("出栈:\n");
for(i=strlen(str)-1; i>=0; i--)
{
x=pop_stack(&S, &x);
printf("%c出栈\n",x );
}
printf("再次打印栈:");
printf_stack(S);
printf("栈长度:%d\n", len_stack(S));
return 0;
}
(第三章)1.顺序栈
于 2022-08-16 15:38:20 首次发布