周记三

#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;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容