📄 function_define.cpp
字号:
/*出版人:袁志浩(2005144070)
应用数学与信息计算科学系B班
2007-4-27
*/
#include<stdio.h>
#include"file.h"
#include<malloc.h>
#include<stdlib.h>
/***************************************************************************/
Status CreateStack(LinkStack &S)//创造链栈
{
S.base=S.top=(SLink)malloc(sizeof(SNode));//栈底和栈顶元素都指向同个元素
if(!S.base) exit(OVERFLOW);
S.base->next=NULL;
return OK;
}
/***************************************************************************/
Status push(LinkStack &S,ElemType e)//插入元素e到链栈中
{
SLink p;
p=(SLink)malloc(sizeof(SNode));
if(!p) exit(OVERFLOW);
p->next=S.top;p->data=e;//p的next指向栈顶
S.top=p;//栈顶指针指向插入的元素
return OK;
}
/****************************************************************************/
Status pop(LinkStack &S,ElemType &e)//删除栈顶元素,用e返回其值
{
SLink p;
if(S.top==S.base) return(ERROR);//如果是空栈返回错误
p=S.top;
e=p->data;//用e存储元素的值
S.top=p->next;//栈顶指针指向删除结点的前一个结点
free(p);//解放p
return OK;
}
/***************************************************************************/
Status transform()//实现十进制转化为二进制
{
int y,div;
LinkStack S;
CreateStack(S);//创建链表
scanf("%d",&div);//得到要转化的值
while(div) {push(S,div%2);div=div/2;}//把div除以2的余数入栈,其的商又赋值于div,实行迭代
printf("结果是: ");
while(S.top!=S.base) {pop(S,y);printf("%d",y);}//出栈,打印栈的元素
return OK;
}
/*********************************结束***************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -