数据结构——栈的基本操作(顺序栈)

  • Post author:
  • Post category:其他


在这里插入图片描述

#include<stdio.h>
#include <stdlib.h>
#define Stack_Size 50
#define TRUE 1
#define FALSE 0
typedef char StackElementType;

typedef struct
{
	StackElementType elem[Stack_Size];  //存放栈中元素的一维数组
	int top;  //存放栈顶元素下标 -1表示空栈
}SeqStack;

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

//进栈
int Push(SeqStack * S,StackElementType x)
{
	if(S->top==Stack_Size-1) return TRUE; //printf("栈已经满啦!")
	S->top++;
	S->elem[S->top]=x;
	return FALSE;  //printf("成功入栈!\n")
}

//出栈
int Pop(SeqStack * S,StackElementType x)
{
	if(S->top==-1)
		return(FALSE);
	else
	{
		x=S->elem[S->top];
		S->top--;
		return (TRUE);
	}
}

//获取栈顶元素
int GetTop(SeqStack * S,StackElementType *x)
{
	if(S->top==-1)
		return(FALSE);
	else
	{
		*x=S->elem[S->top];
		S->top--;
		return (TRUE);
	}
}
void output(SeqStack * S)
{
	int i;
	printf("现在栈里面的元素有:");
	for(i=S->top;i>=0;i--)
	{
		printf("%c  ",S->elem[i]);
	}

}

void main ()
{
	SeqStack S,p;
	char q;
	int choose,cycle=1,i,e;
	InitStack (&S);
	printf("已初始化栈!\n");
	system("color 2F");
	while(cycle){
		printf("请输入要执行的操作:\n");
		printf("\t-----------------------------------------\n");
		printf("\t|\t1.    入栈   \t\t\t|\n");
		printf("\t-----------------------------------------\n");
		printf("\t|\t2.    出栈    \t\t\t|\n");
		printf("\t-----------------------------------------\n");
		printf("\t|\t3.    输出    \t\t\t|\n");
		printf("\t-----------------------------------------\n");
		printf("\t|\t4.    退出    \t\t\t|\n");
		printf("\t-----------------------------------------\n");
		//choose =getch();
		scanf("%d",&choose);
		switch (choose)
		{
		case 1://入栈
				printf("请输入入栈个数:");
				scanf("%d",&e);
				printf("请输入入栈元素:");
				for(i=0;i<=e;i++)
					{
						scanf("%c,",&q);
						Push (&S,q);
					}
				output(&S);
				system("pause");
			break;
		case 2://出栈
			Pop(&S,q);
			printf("出栈啦:");
			output(&S);
			system("pause");
			break;
		case 3://输出栈元素
			output(&S);
			system("pause");
			break;
		case 4:
			cycle=0;
			printf("RZH欢迎您再次使用:\n");
			break;
		default	:
			printf("输入有误,欢迎您再次使用:\n");
			cycle=0;

		}
	}
}



版权声明:本文为qq_41605893原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。