无标题文章

#include<stdio.h>
#include<windows.h>
#include<malloc.h>

//构造顺序栈的数据类型
#define MaxSize 50
typedef char ElemType;


struct stack
{
 char data[50]; //保存数据元素
 int Top;       //栈顶指针(虚指针)
};

typedef struct stack SqStack;

/*
函数功能:向系统申请空间存储顺序栈,且为空栈
函数形参:SqStack *S
函数返回值:无
*/
void InitStack(SqStack *&s)
{
 s=(SqStack *)malloc(sizeof(SqStack));
 s->Top=-1;      //空栈的标志
}
/*
函数功能:Push
函数形参:S(栈),e(入栈元素)
函数返回值:栈满 返回0 否则 入栈返回1
*/
int Push(SqStack *s,ElemType e)
{
 //判断栈满
 if(s->Top==MaxSize-1)  return 0;
 //入栈
 s->Top++;
 s->data[s->Top]=e;
 return 1;
}
/*
函数功能:GetTop
函数形参:s,&e(取栈顶元素)
函数返回值:空栈返回0,否则返回1,e中存栈顶元素
*/
int GetTop(SqStack *s,ElemType &e)
{
 //判断栈是否空栈
 if(s->Top==1) return 0;
 e=s->data[s->Top];
 return 1;
}
/*
函数功能:Pop
函数形参:是,&e(取栈顶元素,类似回收站的作用)
函数返回值:空栈返回0,否则元素出栈返回1
*/
int Pop(SqStack *s,ElemType &e)
{
 if(s->Top==-1) return 0;
 //将删除元素存入回收站e
 e=s->data[s->Top];
 //移动栈指针
 s->Top--;
 return 1;
}
int main()
{
 SqStack *s;
 ElemType e;
 int n,r,t;
 printf("(1)初始化空栈\n");InitStack(s);
 //用户输入转换的十进制数n是?转换成几进制r?
 scanf("%d %d",&n,&r);
 while(n!=0)
 {
  t=n/r;
  e=n%r;
  //取余数
  Push(s,e);
  //对被除数迭代
  n=t;
 }
 if(GetTop(s,e)==1) printf("(3)当前栈顶元素是%d\n",e);
 else               printf("(3)当前为空栈\n");
 while (s->Top!=-1)
 {
  if(Pop(s,e)==1) printf("%d",e);
  else            printf("(4)当前为空栈\n");
 }
 system("PAUSE");
 return 0;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容