《数据结构》有关顺序栈的练习

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 30
typedef int DataType;
typedef struct
{
	int top;
	DataType stack[MAXSIZE];
 }Stack;
void initStack(Stack *s) 
{
	s->top=-1;
}
int pushStack(Stack *s,DataType x)
{
	if(s->top!=MAXSIZE-1)
	{
		s->stack[++s->top]=x;
		return 1;
	}
	return 0;	 
}
DataType popStack(Stack *s)
{
	DataType x;
	if(s->top!=-1)
	{
		x=s->stack[s->top--];
		return x;
	}
	return 0;
}

int main()
{
	Stack *s1=(Stack*)malloc(sizeof(Stack));
	initStack(s1);
	printf("入栈,输入数字(空格隔开),回车结束:\n");
	DataType num[MAXSIZE];
	int j=0; 
	while(1)
	{		
		scanf("%d",&num[j]);
		pushStack(s1, num[j++]);
		if(getchar()=='\n')break;
	}
	printf("出栈:\n");
	while(s1->top>-1) 
	{
		printf("%5d",popStack(s1));
	}
 	return 0;
}

要点

  1.  结构体指针使用前要分配内存、初始化(通过构建的初始化函数初始化);
  2. 连续输入数字,回车结束;
  3. typedef struct{...}Stack; 的好处是:在之后用Stack时,以Stack代替struct{...};

猜你喜欢

转载自blog.csdn.net/lituusliu/article/details/77151771