周记三

2016-11-20  本文已影响0人  Doloresxxxx

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

}

上一篇 下一篇

猜你喜欢

热点阅读