📄 3-1-2.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 + -