⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3-1-2.txt

📁 数据结构源程序
💻 TXT
字号:
/*顺序栈的基本运算与实现*/
#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 256
typedef int datatype;
typedef struct
{
	datatype data[MAXSIZE];
	int top;
}SeqStack;
void menu();
SeqStack * init_SeqStack();
int Empty_SeqStack(SeqStack *S);
int Push_SeqStack(SeqStack *S,datatype x);
int Pop_SeqStack(SeqStack *S,datatype *p);
datatype Top_SeqStack(SeqStack *S);
void conversion(int n,int r);
void main()
{
	int n,m=1;
	SeqStack *S;
	/*clrscr();*/
	while(m)
	{
		menu();
		scanf("%d",&n);
		switch(n)
		{
			case 1:S=init_SeqStack();break;
			case 2:{
				int i,success;
				success=Empty_SeqStack(S);
				if(success!=1)
				{
					for(i=0;i<=S->top;i++)
					{
						printf("%5d",S->data[i]);
					}
				}
				else
					printf(" empty stack!\n");
				break;
				}
			case 3:{
				int i,success;
				datatype x;
				printf("please input x:\n");
				scanf("%d",&x);
				success=Push_SeqStack(S,x);
				if(success==1)
				{
					for(i=0;i<=S->top;i++)
					{
						printf("%5d",S->data[i]);
					}
				}
				else
					printf("stack full!\n");
				break;
				}
			case 4:{
				int i,success;
				datatype x,*p;
				p=&x;
				success=Pop_SeqStack(S,p);
				if(success==1)
				{
					for(i=0;i<=S->top;i++)
					{
						printf("%5d",S->data[i]);
					}
					printf("\n%5d\n",x);
				}
				else
					printf("stack empty!\n");
				break;
				}
			case 5:{
				int i;
				datatype x;
				x=Top_SeqStack(S);
				if(x!=-1)
				{
					for(i=0;i<=S->top;i++)
					{
						printf("%5d",S->data[i]);
					}
					printf("\n%5d\n",x);
				}
				else
					printf("stack empty!\n");
				break;
				}
			case 6:{
				int n,r;  /*n为待转换的十进制数,r为需转换为的进制。*/
				printf("Please input n and r(space between n and r):");
				scanf("%d%d",&n,&r);
				conversion(n,r);
				break;
				}
			case 0:m=0;
		}
	}
}
void menu()
{
	/*clrscr();*/
	printf("\n");
	printf("\t\t1.initialization\n\n");
	printf("\t\t2.empty\n\n");
	printf("\t\t3.push stack\n\n");
	printf("\t\t4.pop stack\n\n");
	printf("\t\t5.get element\n\n");
	printf("\t\t6.jin zhi zhuan huan\n\n");
	printf("\t\t0.exit\n\n");
	printf("\n\n\n\tplease select:");
}
SeqStack * init_SeqStack()
{
	SeqStack *S;
	S=(SeqStack*)malloc(sizeof(SeqStack));
	S->top=-1;
	return S;
}
int Empty_SeqStack(SeqStack *S)
{
	if(S->top==-1)
		return 1;
	else
		return 0;
}
int Push_SeqStack(SeqStack *S,datatype x)
{
	if(S->top==MAXSIZE-1)
	{
		return(0);
	}
	else
	{
		S->top++;
		S->data[S->top]=x;
		return(1);
	}
}
int Pop_SeqStack(SeqStack *S,datatype *p)
{
	if(Empty_SeqStack(S)==1)
	{
		return 0;
	}
	else
	{
		*p=S->data[S->top];
		S->top--;
		return 1;
	}
}
datatype Top_SeqStack(SeqStack *S)
{
	if(Empty_SeqStack(S)==1)
		return -1;
	else
		return(S->data[S->top]);
}
void conversion(int n,int r)
{
	SeqStack *stack; /*定义栈顶指针*/
	datatype x;
	stack=init_SeqStack();
	while(n)
	{
		Push_SeqStack(stack,n%r);
		n=n/r;
	}
	while(!Empty_SeqStack(stack))
	{
		Pop_SeqStack(stack,&x);
		if(x<10)
		{
			printf("%3d",x);
		}
		else
		{
			switch(x)
			{
				case 10:printf("  A");break;
				case 11:printf("  B");break;
				case 12:printf("  C");break;
				case 13:printf("  D");break;
				case 14:printf("  E");break;
				case 15:printf("  F");break;
			}
		}
	}
}

⌨️ 快捷键说明

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