栈作业(徐何).cpp

来自「this a map to you updata myself」· C++ 代码 · 共 107 行

CPP
107
字号
#include<stdio.h>
#include<stdlib.h>
#define FALSE 0
#define TRUE 1
#define M 2

typedef struct
{
	int Stack[M];
	int top;
}DqStack;

void InitStack(DqStack *S);
int push(DqStack *S,int x);
int Pop(DqStack *S,int *x);
int GetTop(DqStack *S,int *x);

int i,x;

void main()
{
	DqStack S;
	int c,z;
	int flag;
	InitStack(&S);
	do{
		printf("初始化请按1\n");
		printf("进栈操作请按2\n");
		printf("出栈操作请按3\n");	
		printf("取栈顶元素请按4\n");
		printf("退出请按5\n");		
		scanf("%d",&c);
		putchar('\n');
		switch(c)
		{
			case 1:
				InitStack(&S);
				break;
			case 2:				
				printf("请输入要进栈的元素x:");
				scanf("%d",&x);
				flag=push(&S,x);
				if(!flag)
					printf("********* error,入栈失败,栈已满");
				putchar('\n');
				break;
			case 3:
				flag=Pop(&S,&z);
				if(flag)
					printf("出栈的元素为:%d",z);
				else
					printf("********* error,栈已空");
				putchar('\n');
				putchar('\n');
				break;
			case 4:
				flag=GetTop(&S,&z);
				if(flag)
					printf("栈顶的元素为:%d",z);
				else
					printf("********* error,栈已空");
			default: 
				putchar('\n');
				putchar('\n');
				break;
		}
	
	}while(c!=5); 	
	printf("*\n");
}


void InitStack(DqStack *S)
//初始化栈
{
	S->top=-1;
}


int push(DqStack *S,int x)
//进栈操作
{
	if(S->top==M-1)//判断是否栈满
		return(FALSE);
	S->top++;
	S->Stack[S->top]=x;
	return(TRUE);
}

int Pop(DqStack *S,int *x)
//出栈操作
{
	if(S->top==-1) //判断是否栈空
		return(FALSE);
	*x=S->Stack[S->top];
	S->top--;
	return(TRUE);
}

int GetTop(DqStack *S,int *x)
//取栈顶元素
{
		if(S->top==-1)
			return(FALSE);
		*x=S->Stack[S->top];
		return(TRUE);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?