问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

分别写函数实现初始化栈、入栈、出栈、判断栈空、判断栈满。例如入栈序列为1 2 3 4 5,出栈则为5 4 3 2 1

发布网友 发布时间:2022-05-07 23:23

我来回答

3个回答

热心网友 时间:2023-11-20 03:25

1、初始化栈

/*功能:初始化栈

 *函数名:InitStack

 *返回值:void

 */

void InitStack(stack *p)

{

p->top=-1;

}

 2、判断栈为满

/*功能:判断栈为满

 *函数名:IsFull

 *返回值:为满——真1,非满——假0

 */

BOOL IsFull(stack *p)

{

if(MAXSIZE-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

 3、判断栈为空

/*功能:判断栈为空

 * 函数名:IsEmpty

 *返回值:为空——真1,非空——假0

 */

BOOL IsEmpty(stack *p)

{

if(-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

4、进栈

/*功能:进栈

 *函数名:push

 *返回值:成功TRUN 失败FALSE

 *注:不能为满,否则进栈失败

 */

BOOL push(stack *p,StackType data)//p=&s

{

//判断栈是否为满

if(TRUE==IsFull(p))//为满

{

return FALSE;//返回失败

}

p->buf[++p->top]=data;

return TRUE;//返回成功

}

5、出栈

/*功能:出栈

 *函数名:pop

 *返回值:出栈成功TRUE 失败FALSE

 */

BOOL pop(stack *p,StackType *pd)

{

//判断是否为空,为空出栈无意义

if(TRUE==IsEmpty(p))

{

return FALSE;//出栈失败

}

*pd=p->buf[p->top--];//优先级->大于--

return TRUE;//出栈成功

}

扩展资料:

主函数:

void main()

{

//定义变量:类型 变量名

//struct st s;

struct st s;//分配空间

//初始化

InitStack(&s);

int num=0;

printf("请输入");

scanf("%d",&num);

//求二进制

while(num!=0)

{

//将余数入栈

if(FALSE==push(&s,num%2))

{

return;//结束

}

num/=2;

}

//将二进制结果取出来

char value=0;

while(FALSE!=pop(&s,&value))

{

printf("%d",value);

}

printf("\n");

}

热心网友 时间:2023-11-20 03:25

1、初始化栈

/*功能:初始化栈

 *函数名:InitStack

 *返回值:void

 */

void InitStack(stack *p)

{

p->top=-1;

}

 2、判断栈为满

/*功能:判断栈为满

 *函数名:IsFull

 *返回值:为满——真1,非满——假0

 */

BOOL IsFull(stack *p)

{

if(MAXSIZE-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

 3、判断栈为空

/*功能:判断栈为空

 * 函数名:IsEmpty

 *返回值:为空——真1,非空——假0

 */

BOOL IsEmpty(stack *p)

{

if(-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

4、进栈

/*功能:进栈

 *函数名:push

 *返回值:成功TRUN 失败FALSE

 *注:不能为满,否则进栈失败

 */

BOOL push(stack *p,StackType data)//p=&s

{

//判断栈是否为满

if(TRUE==IsFull(p))//为满

{

return FALSE;//返回失败

}

p->buf[++p->top]=data;

return TRUE;//返回成功

}

5、出栈

/*功能:出栈

 *函数名:pop

 *返回值:出栈成功TRUE 失败FALSE

 */

BOOL pop(stack *p,StackType *pd)

{

//判断是否为空,为空出栈无意义

if(TRUE==IsEmpty(p))

{

return FALSE;//出栈失败

}

*pd=p->buf[p->top--];//优先级->大于--

return TRUE;//出栈成功

}

扩展资料:

主函数:

void main()

{

//定义变量:类型 变量名

//struct st s;

struct st s;//分配空间

//初始化

InitStack(&s);

int num=0;

printf("请输入");

scanf("%d",&num);

//求二进制

while(num!=0)

{

//将余数入栈

if(FALSE==push(&s,num%2))

{

return;//结束

}

num/=2;

}

//将二进制结果取出来

char value=0;

while(FALSE!=pop(&s,&value))

{

printf("%d",value);

}

printf("\n");

}

热心网友 时间:2023-11-20 03:25

1、初始化栈

/*功能:初始化栈

 *函数名:InitStack

 *返回值:void

 */

void InitStack(stack *p)

{

p->top=-1;

}

 2、判断栈为满

/*功能:判断栈为满

 *函数名:IsFull

 *返回值:为满——真1,非满——假0

 */

BOOL IsFull(stack *p)

{

if(MAXSIZE-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

 3、判断栈为空

/*功能:判断栈为空

 * 函数名:IsEmpty

 *返回值:为空——真1,非空——假0

 */

BOOL IsEmpty(stack *p)

{

if(-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

4、进栈

/*功能:进栈

 *函数名:push

 *返回值:成功TRUN 失败FALSE

 *注:不能为满,否则进栈失败

 */

BOOL push(stack *p,StackType data)//p=&s

{

//判断栈是否为满

if(TRUE==IsFull(p))//为满

{

return FALSE;//返回失败

}

p->buf[++p->top]=data;

return TRUE;//返回成功

}

5、出栈

/*功能:出栈

 *函数名:pop

 *返回值:出栈成功TRUE 失败FALSE

 */

BOOL pop(stack *p,StackType *pd)

{

//判断是否为空,为空出栈无意义

if(TRUE==IsEmpty(p))

{

return FALSE;//出栈失败

}

*pd=p->buf[p->top--];//优先级->大于--

return TRUE;//出栈成功

}

扩展资料:

主函数:

void main()

{

//定义变量:类型 变量名

//struct st s;

struct st s;//分配空间

//初始化

InitStack(&s);

int num=0;

printf("请输入");

scanf("%d",&num);

//求二进制

while(num!=0)

{

//将余数入栈

if(FALSE==push(&s,num%2))

{

return;//结束

}

num/=2;

}

//将二进制结果取出来

char value=0;

while(FALSE!=pop(&s,&value))

{

printf("%d",value);

}

printf("\n");

}

热心网友 时间:2023-11-20 03:25

1、初始化栈

/*功能:初始化栈

 *函数名:InitStack

 *返回值:void

 */

void InitStack(stack *p)

{

p->top=-1;

}

 2、判断栈为满

/*功能:判断栈为满

 *函数名:IsFull

 *返回值:为满——真1,非满——假0

 */

BOOL IsFull(stack *p)

{

if(MAXSIZE-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

 3、判断栈为空

/*功能:判断栈为空

 * 函数名:IsEmpty

 *返回值:为空——真1,非空——假0

 */

BOOL IsEmpty(stack *p)

{

if(-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

4、进栈

/*功能:进栈

 *函数名:push

 *返回值:成功TRUN 失败FALSE

 *注:不能为满,否则进栈失败

 */

BOOL push(stack *p,StackType data)//p=&s

{

//判断栈是否为满

if(TRUE==IsFull(p))//为满

{

return FALSE;//返回失败

}

p->buf[++p->top]=data;

return TRUE;//返回成功

}

5、出栈

/*功能:出栈

 *函数名:pop

 *返回值:出栈成功TRUE 失败FALSE

 */

BOOL pop(stack *p,StackType *pd)

{

//判断是否为空,为空出栈无意义

if(TRUE==IsEmpty(p))

{

return FALSE;//出栈失败

}

*pd=p->buf[p->top--];//优先级->大于--

return TRUE;//出栈成功

}

扩展资料:

主函数:

void main()

{

//定义变量:类型 变量名

//struct st s;

struct st s;//分配空间

//初始化

InitStack(&s);

int num=0;

printf("请输入");

scanf("%d",&num);

//求二进制

while(num!=0)

{

//将余数入栈

if(FALSE==push(&s,num%2))

{

return;//结束

}

num/=2;

}

//将二进制结果取出来

char value=0;

while(FALSE!=pop(&s,&value))

{

printf("%d",value);

}

printf("\n");

}

热心网友 时间:2023-11-20 03:25

1、初始化栈

/*功能:初始化栈

 *函数名:InitStack

 *返回值:void

 */

void InitStack(stack *p)

{

p->top=-1;

}

 2、判断栈为满

/*功能:判断栈为满

 *函数名:IsFull

 *返回值:为满——真1,非满——假0

 */

BOOL IsFull(stack *p)

{

if(MAXSIZE-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

 3、判断栈为空

/*功能:判断栈为空

 * 函数名:IsEmpty

 *返回值:为空——真1,非空——假0

 */

BOOL IsEmpty(stack *p)

{

if(-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

4、进栈

/*功能:进栈

 *函数名:push

 *返回值:成功TRUN 失败FALSE

 *注:不能为满,否则进栈失败

 */

BOOL push(stack *p,StackType data)//p=&s

{

//判断栈是否为满

if(TRUE==IsFull(p))//为满

{

return FALSE;//返回失败

}

p->buf[++p->top]=data;

return TRUE;//返回成功

}

5、出栈

/*功能:出栈

 *函数名:pop

 *返回值:出栈成功TRUE 失败FALSE

 */

BOOL pop(stack *p,StackType *pd)

{

//判断是否为空,为空出栈无意义

if(TRUE==IsEmpty(p))

{

return FALSE;//出栈失败

}

*pd=p->buf[p->top--];//优先级->大于--

return TRUE;//出栈成功

}

扩展资料:

主函数:

void main()

{

//定义变量:类型 变量名

//struct st s;

struct st s;//分配空间

//初始化

InitStack(&s);

int num=0;

printf("请输入");

scanf("%d",&num);

//求二进制

while(num!=0)

{

//将余数入栈

if(FALSE==push(&s,num%2))

{

return;//结束

}

num/=2;

}

//将二进制结果取出来

char value=0;

while(FALSE!=pop(&s,&value))

{

printf("%d",value);

}

printf("\n");

}

热心网友 时间:2023-11-20 03:25

#define OK 1
#define TRUE 1
#define ERROR 0
#define FALSE 0
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define Status int
#define SElemType int

#include "stdio.h"
#include "malloc.h"

/* 栈的操作
SElemType 栈的数据类型
Status InitStatck(SqStack &s) 初始化栈
Status DestoryStatck(SqStack &s) 销毁栈
Status ClearStack(SqStack &s) 清除栈
bool StackEmpty(SqStack s) 栈是否为空
int StackLength(SqStack s) 栈的长度
Status GetTop(SqStack s,SElemType &e) 得到栈顶
Status Push(SqStack &s,SElemType e) 压栈
Status Pop(SqStack &s,SElemType &e) 出栈*/

typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
/*==================================
功能: 初始化栈
参数: SqStack
返回:OVERFLOW or TRUE;
//=================================*/
Status InitStatck(SqStack &s){
s.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!s.base)
{
return OVERFLOW;
}
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
/*==================================
功能: 销毁栈
参数: SqStack
返回: OK;
//=================================*/
Status DestoryStatck(SqStack &s){
s.top=s.top;
s.stacksize=0;

free(s.top);
free(s.base);

return OK;
}
/*==================================
功能: 清除栈
参数: SqStack
返回: OK;
//=================================*/
Status ClearStack(SqStack &s){
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
/*==================================
功能: 判断栈是否为空
参数: SqStack
返回: TRUE or FALSE
//=================================*/
bool StackEmpty(SqStack s){
if(s.base==s.top)
{
return TRUE;
}
else
{
return FALSE;
}
}
/*==================================
功能: 得到栈的长度
参数: SqStack
返回: int 栈的长度
//=================================*/
int StackLength(SqStack s){
if(s.base=s.top)
{
return ERROR;
}
else
{
return (s.top-s.base);
}
}
/*==================================
功能: 得到栈的TOP
参数: SqStack ,SElemType
备注: 仅仅得到数据,不出栈;
返回: SElemType类型的数据
//=================================*/
Status GetTop(SqStack s,SElemType &e){
if(StackEmpty(s))
{
printf("this statck is empty !/n");
return ERROR;
}
else
{
e=*(--s.top);
return OK;
}
}
/*==================================
功能: 压栈
参数: SqStack ,SElemType
返回: ERROR OR OK
//=================================*/
Status Push(SqStack &s,SElemType e){
if(StackLength(s)==STACK_INIT_SIZE)
{
SElemType *tem;
tem=(SElemType*)realloc(s.base,
(STACK_INIT_SIZE + STACKINCREMENT) * sizeof(SElemType));
if(!tem)
{
return ERROR;
}
s.base=tem;
s.top=s.base+STACK_INIT_SIZE;
s.stacksize+=STACKINCREMENT;
*(s.top++)=e;
return OK;
}
else
{
*(s.top++)=e;
return OK;
}
}
/*==================================
功能: 出栈
参数: SqStack ,SElemType
返回: ERROR OR OK
//=================================*/
Status Pop(SqStack &s,SElemType &e){
if(StackEmpty(s))
{
printf("this statck is empty !/n");
return ERROR;
}
else
{
e=*(--s.top);
return OK;
}
}
//void StackTraverse(SqStack,void Fun()){
void main(){
SqStack statck;
InitStatck(statck);
for(int i=0;i<5;i++)
{
if(Push(statck,i))
{
printf("%d is push in this statck success!/n",i);
}
else
{
printf("/n/thappen a error/n/t");
}
}

int tem;
printf("now i will print this top of statck !/n");
GetTop(statck,tem);
printf("%d is top of this statck/n",tem);

}追问没法运行,运行不出来啊大哥!

追答可以啊。。。只不过main.cpp上面的转义字符复制过来变了,是反\

热心网友 时间:2023-11-20 03:25

#define OK 1
#define TRUE 1
#define ERROR 0
#define FALSE 0
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define Status int
#define SElemType int

#include "stdio.h"
#include "malloc.h"

/* 栈的操作
SElemType 栈的数据类型
Status InitStatck(SqStack &s) 初始化栈
Status DestoryStatck(SqStack &s) 销毁栈
Status ClearStack(SqStack &s) 清除栈
bool StackEmpty(SqStack s) 栈是否为空
int StackLength(SqStack s) 栈的长度
Status GetTop(SqStack s,SElemType &e) 得到栈顶
Status Push(SqStack &s,SElemType e) 压栈
Status Pop(SqStack &s,SElemType &e) 出栈*/

typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
/*==================================
功能: 初始化栈
参数: SqStack
返回:OVERFLOW or TRUE;
//=================================*/
Status InitStatck(SqStack &s){
s.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!s.base)
{
return OVERFLOW;
}
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
/*==================================
功能: 销毁栈
参数: SqStack
返回: OK;
//=================================*/
Status DestoryStatck(SqStack &s){
s.top=s.top;
s.stacksize=0;

free(s.top);
free(s.base);

return OK;
}
/*==================================
功能: 清除栈
参数: SqStack
返回: OK;
//=================================*/
Status ClearStack(SqStack &s){
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
/*==================================
功能: 判断栈是否为空
参数: SqStack
返回: TRUE or FALSE
//=================================*/
bool StackEmpty(SqStack s){
if(s.base==s.top)
{
return TRUE;
}
else
{
return FALSE;
}
}
/*==================================
功能: 得到栈的长度
参数: SqStack
返回: int 栈的长度
//=================================*/
int StackLength(SqStack s){
if(s.base=s.top)
{
return ERROR;
}
else
{
return (s.top-s.base);
}
}
/*==================================
功能: 得到栈的TOP
参数: SqStack ,SElemType
备注: 仅仅得到数据,不出栈;
返回: SElemType类型的数据
//=================================*/
Status GetTop(SqStack s,SElemType &e){
if(StackEmpty(s))
{
printf("this statck is empty !/n");
return ERROR;
}
else
{
e=*(--s.top);
return OK;
}
}
/*==================================
功能: 压栈
参数: SqStack ,SElemType
返回: ERROR OR OK
//=================================*/
Status Push(SqStack &s,SElemType e){
if(StackLength(s)==STACK_INIT_SIZE)
{
SElemType *tem;
tem=(SElemType*)realloc(s.base,
(STACK_INIT_SIZE + STACKINCREMENT) * sizeof(SElemType));
if(!tem)
{
return ERROR;
}
s.base=tem;
s.top=s.base+STACK_INIT_SIZE;
s.stacksize+=STACKINCREMENT;
*(s.top++)=e;
return OK;
}
else
{
*(s.top++)=e;
return OK;
}
}
/*==================================
功能: 出栈
参数: SqStack ,SElemType
返回: ERROR OR OK
//=================================*/
Status Pop(SqStack &s,SElemType &e){
if(StackEmpty(s))
{
printf("this statck is empty !/n");
return ERROR;
}
else
{
e=*(--s.top);
return OK;
}
}
//void StackTraverse(SqStack,void Fun()){
void main(){
SqStack statck;
InitStatck(statck);
for(int i=0;i<5;i++)
{
if(Push(statck,i))
{
printf("%d is push in this statck success!/n",i);
}
else
{
printf("/n/thappen a error/n/t");
}
}

int tem;
printf("now i will print this top of statck !/n");
GetTop(statck,tem);
printf("%d is top of this statck/n",tem);

}追问没法运行,运行不出来啊大哥!

追答可以啊。。。只不过main.cpp上面的转义字符复制过来变了,是反\

热心网友 时间:2023-11-20 03:25

1、初始化栈

/*功能:初始化栈

 *函数名:InitStack

 *返回值:void

 */

void InitStack(stack *p)

{

p->top=-1;

}

 2、判断栈为满

/*功能:判断栈为满

 *函数名:IsFull

 *返回值:为满——真1,非满——假0

 */

BOOL IsFull(stack *p)

{

if(MAXSIZE-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

 3、判断栈为空

/*功能:判断栈为空

 * 函数名:IsEmpty

 *返回值:为空——真1,非空——假0

 */

BOOL IsEmpty(stack *p)

{

if(-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

4、进栈

/*功能:进栈

 *函数名:push

 *返回值:成功TRUN 失败FALSE

 *注:不能为满,否则进栈失败

 */

BOOL push(stack *p,StackType data)//p=&s

{

//判断栈是否为满

if(TRUE==IsFull(p))//为满

{

return FALSE;//返回失败

}

p->buf[++p->top]=data;

return TRUE;//返回成功

}

5、出栈

/*功能:出栈

 *函数名:pop

 *返回值:出栈成功TRUE 失败FALSE

 */

BOOL pop(stack *p,StackType *pd)

{

//判断是否为空,为空出栈无意义

if(TRUE==IsEmpty(p))

{

return FALSE;//出栈失败

}

*pd=p->buf[p->top--];//优先级->大于--

return TRUE;//出栈成功

}

扩展资料:

主函数:

void main()

{

//定义变量:类型 变量名

//struct st s;

struct st s;//分配空间

//初始化

InitStack(&s);

int num=0;

printf("请输入");

scanf("%d",&num);

//求二进制

while(num!=0)

{

//将余数入栈

if(FALSE==push(&s,num%2))

{

return;//结束

}

num/=2;

}

//将二进制结果取出来

char value=0;

while(FALSE!=pop(&s,&value))

{

printf("%d",value);

}

printf("\n");

}

热心网友 时间:2023-11-20 03:25

#define OK 1
#define TRUE 1
#define ERROR 0
#define FALSE 0
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define Status int
#define SElemType int

#include "stdio.h"
#include "malloc.h"

/* 栈的操作
SElemType 栈的数据类型
Status InitStatck(SqStack &s) 初始化栈
Status DestoryStatck(SqStack &s) 销毁栈
Status ClearStack(SqStack &s) 清除栈
bool StackEmpty(SqStack s) 栈是否为空
int StackLength(SqStack s) 栈的长度
Status GetTop(SqStack s,SElemType &e) 得到栈顶
Status Push(SqStack &s,SElemType e) 压栈
Status Pop(SqStack &s,SElemType &e) 出栈*/

typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
/*==================================
功能: 初始化栈
参数: SqStack
返回:OVERFLOW or TRUE;
//=================================*/
Status InitStatck(SqStack &s){
s.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!s.base)
{
return OVERFLOW;
}
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
/*==================================
功能: 销毁栈
参数: SqStack
返回: OK;
//=================================*/
Status DestoryStatck(SqStack &s){
s.top=s.top;
s.stacksize=0;

free(s.top);
free(s.base);

return OK;
}
/*==================================
功能: 清除栈
参数: SqStack
返回: OK;
//=================================*/
Status ClearStack(SqStack &s){
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
/*==================================
功能: 判断栈是否为空
参数: SqStack
返回: TRUE or FALSE
//=================================*/
bool StackEmpty(SqStack s){
if(s.base==s.top)
{
return TRUE;
}
else
{
return FALSE;
}
}
/*==================================
功能: 得到栈的长度
参数: SqStack
返回: int 栈的长度
//=================================*/
int StackLength(SqStack s){
if(s.base=s.top)
{
return ERROR;
}
else
{
return (s.top-s.base);
}
}
/*==================================
功能: 得到栈的TOP
参数: SqStack ,SElemType
备注: 仅仅得到数据,不出栈;
返回: SElemType类型的数据
//=================================*/
Status GetTop(SqStack s,SElemType &e){
if(StackEmpty(s))
{
printf("this statck is empty !/n");
return ERROR;
}
else
{
e=*(--s.top);
return OK;
}
}
/*==================================
功能: 压栈
参数: SqStack ,SElemType
返回: ERROR OR OK
//=================================*/
Status Push(SqStack &s,SElemType e){
if(StackLength(s)==STACK_INIT_SIZE)
{
SElemType *tem;
tem=(SElemType*)realloc(s.base,
(STACK_INIT_SIZE + STACKINCREMENT) * sizeof(SElemType));
if(!tem)
{
return ERROR;
}
s.base=tem;
s.top=s.base+STACK_INIT_SIZE;
s.stacksize+=STACKINCREMENT;
*(s.top++)=e;
return OK;
}
else
{
*(s.top++)=e;
return OK;
}
}
/*==================================
功能: 出栈
参数: SqStack ,SElemType
返回: ERROR OR OK
//=================================*/
Status Pop(SqStack &s,SElemType &e){
if(StackEmpty(s))
{
printf("this statck is empty !/n");
return ERROR;
}
else
{
e=*(--s.top);
return OK;
}
}
//void StackTraverse(SqStack,void Fun()){
void main(){
SqStack statck;
InitStatck(statck);
for(int i=0;i<5;i++)
{
if(Push(statck,i))
{
printf("%d is push in this statck success!/n",i);
}
else
{
printf("/n/thappen a error/n/t");
}
}

int tem;
printf("now i will print this top of statck !/n");
GetTop(statck,tem);
printf("%d is top of this statck/n",tem);

}追问没法运行,运行不出来啊大哥!

追答可以啊。。。只不过main.cpp上面的转义字符复制过来变了,是反\

热心网友 时间:2023-11-20 03:26

数据结构书上不都有么?

热心网友 时间:2023-11-20 03:25

#define OK 1
#define TRUE 1
#define ERROR 0
#define FALSE 0
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define Status int
#define SElemType int

#include "stdio.h"
#include "malloc.h"

/* 栈的操作
SElemType 栈的数据类型
Status InitStatck(SqStack &s) 初始化栈
Status DestoryStatck(SqStack &s) 销毁栈
Status ClearStack(SqStack &s) 清除栈
bool StackEmpty(SqStack s) 栈是否为空
int StackLength(SqStack s) 栈的长度
Status GetTop(SqStack s,SElemType &e) 得到栈顶
Status Push(SqStack &s,SElemType e) 压栈
Status Pop(SqStack &s,SElemType &e) 出栈*/

typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
/*==================================
功能: 初始化栈
参数: SqStack
返回:OVERFLOW or TRUE;
//=================================*/
Status InitStatck(SqStack &s){
s.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!s.base)
{
return OVERFLOW;
}
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
/*==================================
功能: 销毁栈
参数: SqStack
返回: OK;
//=================================*/
Status DestoryStatck(SqStack &s){
s.top=s.top;
s.stacksize=0;

free(s.top);
free(s.base);

return OK;
}
/*==================================
功能: 清除栈
参数: SqStack
返回: OK;
//=================================*/
Status ClearStack(SqStack &s){
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
/*==================================
功能: 判断栈是否为空
参数: SqStack
返回: TRUE or FALSE
//=================================*/
bool StackEmpty(SqStack s){
if(s.base==s.top)
{
return TRUE;
}
else
{
return FALSE;
}
}
/*==================================
功能: 得到栈的长度
参数: SqStack
返回: int 栈的长度
//=================================*/
int StackLength(SqStack s){
if(s.base=s.top)
{
return ERROR;
}
else
{
return (s.top-s.base);
}
}
/*==================================
功能: 得到栈的TOP
参数: SqStack ,SElemType
备注: 仅仅得到数据,不出栈;
返回: SElemType类型的数据
//=================================*/
Status GetTop(SqStack s,SElemType &e){
if(StackEmpty(s))
{
printf("this statck is empty !/n");
return ERROR;
}
else
{
e=*(--s.top);
return OK;
}
}
/*==================================
功能: 压栈
参数: SqStack ,SElemType
返回: ERROR OR OK
//=================================*/
Status Push(SqStack &s,SElemType e){
if(StackLength(s)==STACK_INIT_SIZE)
{
SElemType *tem;
tem=(SElemType*)realloc(s.base,
(STACK_INIT_SIZE + STACKINCREMENT) * sizeof(SElemType));
if(!tem)
{
return ERROR;
}
s.base=tem;
s.top=s.base+STACK_INIT_SIZE;
s.stacksize+=STACKINCREMENT;
*(s.top++)=e;
return OK;
}
else
{
*(s.top++)=e;
return OK;
}
}
/*==================================
功能: 出栈
参数: SqStack ,SElemType
返回: ERROR OR OK
//=================================*/
Status Pop(SqStack &s,SElemType &e){
if(StackEmpty(s))
{
printf("this statck is empty !/n");
return ERROR;
}
else
{
e=*(--s.top);
return OK;
}
}
//void StackTraverse(SqStack,void Fun()){
void main(){
SqStack statck;
InitStatck(statck);
for(int i=0;i<5;i++)
{
if(Push(statck,i))
{
printf("%d is push in this statck success!/n",i);
}
else
{
printf("/n/thappen a error/n/t");
}
}

int tem;
printf("now i will print this top of statck !/n");
GetTop(statck,tem);
printf("%d is top of this statck/n",tem);

}追问没法运行,运行不出来啊大哥!

追答可以啊。。。只不过main.cpp上面的转义字符复制过来变了,是反\

热心网友 时间:2023-11-20 03:26

数据结构书上不都有么?

热心网友 时间:2023-11-20 03:25

#define OK 1
#define TRUE 1
#define ERROR 0
#define FALSE 0
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define Status int
#define SElemType int

#include "stdio.h"
#include "malloc.h"

/* 栈的操作
SElemType 栈的数据类型
Status InitStatck(SqStack &s) 初始化栈
Status DestoryStatck(SqStack &s) 销毁栈
Status ClearStack(SqStack &s) 清除栈
bool StackEmpty(SqStack s) 栈是否为空
int StackLength(SqStack s) 栈的长度
Status GetTop(SqStack s,SElemType &e) 得到栈顶
Status Push(SqStack &s,SElemType e) 压栈
Status Pop(SqStack &s,SElemType &e) 出栈*/

typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
/*==================================
功能: 初始化栈
参数: SqStack
返回:OVERFLOW or TRUE;
//=================================*/
Status InitStatck(SqStack &s){
s.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!s.base)
{
return OVERFLOW;
}
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
/*==================================
功能: 销毁栈
参数: SqStack
返回: OK;
//=================================*/
Status DestoryStatck(SqStack &s){
s.top=s.top;
s.stacksize=0;

free(s.top);
free(s.base);

return OK;
}
/*==================================
功能: 清除栈
参数: SqStack
返回: OK;
//=================================*/
Status ClearStack(SqStack &s){
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
/*==================================
功能: 判断栈是否为空
参数: SqStack
返回: TRUE or FALSE
//=================================*/
bool StackEmpty(SqStack s){
if(s.base==s.top)
{
return TRUE;
}
else
{
return FALSE;
}
}
/*==================================
功能: 得到栈的长度
参数: SqStack
返回: int 栈的长度
//=================================*/
int StackLength(SqStack s){
if(s.base=s.top)
{
return ERROR;
}
else
{
return (s.top-s.base);
}
}
/*==================================
功能: 得到栈的TOP
参数: SqStack ,SElemType
备注: 仅仅得到数据,不出栈;
返回: SElemType类型的数据
//=================================*/
Status GetTop(SqStack s,SElemType &e){
if(StackEmpty(s))
{
printf("this statck is empty !/n");
return ERROR;
}
else
{
e=*(--s.top);
return OK;
}
}
/*==================================
功能: 压栈
参数: SqStack ,SElemType
返回: ERROR OR OK
//=================================*/
Status Push(SqStack &s,SElemType e){
if(StackLength(s)==STACK_INIT_SIZE)
{
SElemType *tem;
tem=(SElemType*)realloc(s.base,
(STACK_INIT_SIZE + STACKINCREMENT) * sizeof(SElemType));
if(!tem)
{
return ERROR;
}
s.base=tem;
s.top=s.base+STACK_INIT_SIZE;
s.stacksize+=STACKINCREMENT;
*(s.top++)=e;
return OK;
}
else
{
*(s.top++)=e;
return OK;
}
}
/*==================================
功能: 出栈
参数: SqStack ,SElemType
返回: ERROR OR OK
//=================================*/
Status Pop(SqStack &s,SElemType &e){
if(StackEmpty(s))
{
printf("this statck is empty !/n");
return ERROR;
}
else
{
e=*(--s.top);
return OK;
}
}
//void StackTraverse(SqStack,void Fun()){
void main(){
SqStack statck;
InitStatck(statck);
for(int i=0;i<5;i++)
{
if(Push(statck,i))
{
printf("%d is push in this statck success!/n",i);
}
else
{
printf("/n/thappen a error/n/t");
}
}

int tem;
printf("now i will print this top of statck !/n");
GetTop(statck,tem);
printf("%d is top of this statck/n",tem);

}追问没法运行,运行不出来啊大哥!

追答可以啊。。。只不过main.cpp上面的转义字符复制过来变了,是反\

热心网友 时间:2023-11-20 03:26

数据结构书上不都有么?

热心网友 时间:2023-11-20 03:25

#define OK 1
#define TRUE 1
#define ERROR 0
#define FALSE 0
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define Status int
#define SElemType int

#include "stdio.h"
#include "malloc.h"

/* 栈的操作
SElemType 栈的数据类型
Status InitStatck(SqStack &s) 初始化栈
Status DestoryStatck(SqStack &s) 销毁栈
Status ClearStack(SqStack &s) 清除栈
bool StackEmpty(SqStack s) 栈是否为空
int StackLength(SqStack s) 栈的长度
Status GetTop(SqStack s,SElemType &e) 得到栈顶
Status Push(SqStack &s,SElemType e) 压栈
Status Pop(SqStack &s,SElemType &e) 出栈*/

typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
/*==================================
功能: 初始化栈
参数: SqStack
返回:OVERFLOW or TRUE;
//=================================*/
Status InitStatck(SqStack &s){
s.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!s.base)
{
return OVERFLOW;
}
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
/*==================================
功能: 销毁栈
参数: SqStack
返回: OK;
//=================================*/
Status DestoryStatck(SqStack &s){
s.top=s.top;
s.stacksize=0;

free(s.top);
free(s.base);

return OK;
}
/*==================================
功能: 清除栈
参数: SqStack
返回: OK;
//=================================*/
Status ClearStack(SqStack &s){
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
/*==================================
功能: 判断栈是否为空
参数: SqStack
返回: TRUE or FALSE
//=================================*/
bool StackEmpty(SqStack s){
if(s.base==s.top)
{
return TRUE;
}
else
{
return FALSE;
}
}
/*==================================
功能: 得到栈的长度
参数: SqStack
返回: int 栈的长度
//=================================*/
int StackLength(SqStack s){
if(s.base=s.top)
{
return ERROR;
}
else
{
return (s.top-s.base);
}
}
/*==================================
功能: 得到栈的TOP
参数: SqStack ,SElemType
备注: 仅仅得到数据,不出栈;
返回: SElemType类型的数据
//=================================*/
Status GetTop(SqStack s,SElemType &e){
if(StackEmpty(s))
{
printf("this statck is empty !/n");
return ERROR;
}
else
{
e=*(--s.top);
return OK;
}
}
/*==================================
功能: 压栈
参数: SqStack ,SElemType
返回: ERROR OR OK
//=================================*/
Status Push(SqStack &s,SElemType e){
if(StackLength(s)==STACK_INIT_SIZE)
{
SElemType *tem;
tem=(SElemType*)realloc(s.base,
(STACK_INIT_SIZE + STACKINCREMENT) * sizeof(SElemType));
if(!tem)
{
return ERROR;
}
s.base=tem;
s.top=s.base+STACK_INIT_SIZE;
s.stacksize+=STACKINCREMENT;
*(s.top++)=e;
return OK;
}
else
{
*(s.top++)=e;
return OK;
}
}
/*==================================
功能: 出栈
参数: SqStack ,SElemType
返回: ERROR OR OK
//=================================*/
Status Pop(SqStack &s,SElemType &e){
if(StackEmpty(s))
{
printf("this statck is empty !/n");
return ERROR;
}
else
{
e=*(--s.top);
return OK;
}
}
//void StackTraverse(SqStack,void Fun()){
void main(){
SqStack statck;
InitStatck(statck);
for(int i=0;i<5;i++)
{
if(Push(statck,i))
{
printf("%d is push in this statck success!/n",i);
}
else
{
printf("/n/thappen a error/n/t");
}
}

int tem;
printf("now i will print this top of statck !/n");
GetTop(statck,tem);
printf("%d is top of this statck/n",tem);

}追问没法运行,运行不出来啊大哥!

追答可以啊。。。只不过main.cpp上面的转义字符复制过来变了,是反\

热心网友 时间:2023-11-20 03:26

数据结构书上不都有么?

热心网友 时间:2023-11-20 03:26

数据结构书上不都有么?

热心网友 时间:2023-11-20 03:26

数据结构书上不都有么?

热心网友 时间:2023-11-20 03:25

1、初始化栈

/*功能:初始化栈

 *函数名:InitStack

 *返回值:void

 */

void InitStack(stack *p)

{

p->top=-1;

}

 2、判断栈为满

/*功能:判断栈为满

 *函数名:IsFull

 *返回值:为满——真1,非满——假0

 */

BOOL IsFull(stack *p)

{

if(MAXSIZE-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

 3、判断栈为空

/*功能:判断栈为空

 * 函数名:IsEmpty

 *返回值:为空——真1,非空——假0

 */

BOOL IsEmpty(stack *p)

{

if(-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

4、进栈

/*功能:进栈

 *函数名:push

 *返回值:成功TRUN 失败FALSE

 *注:不能为满,否则进栈失败

 */

BOOL push(stack *p,StackType data)//p=&s

{

//判断栈是否为满

if(TRUE==IsFull(p))//为满

{

return FALSE;//返回失败

}

p->buf[++p->top]=data;

return TRUE;//返回成功

}

5、出栈

/*功能:出栈

 *函数名:pop

 *返回值:出栈成功TRUE 失败FALSE

 */

BOOL pop(stack *p,StackType *pd)

{

//判断是否为空,为空出栈无意义

if(TRUE==IsEmpty(p))

{

return FALSE;//出栈失败

}

*pd=p->buf[p->top--];//优先级->大于--

return TRUE;//出栈成功

}

扩展资料:

主函数:

void main()

{

//定义变量:类型 变量名

//struct st s;

struct st s;//分配空间

//初始化

InitStack(&s);

int num=0;

printf("请输入");

scanf("%d",&num);

//求二进制

while(num!=0)

{

//将余数入栈

if(FALSE==push(&s,num%2))

{

return;//结束

}

num/=2;

}

//将二进制结果取出来

char value=0;

while(FALSE!=pop(&s,&value))

{

printf("%d",value);

}

printf("\n");

}

热心网友 时间:2023-11-20 03:25

1、初始化栈

/*功能:初始化栈

 *函数名:InitStack

 *返回值:void

 */

void InitStack(stack *p)

{

p->top=-1;

}

 2、判断栈为满

/*功能:判断栈为满

 *函数名:IsFull

 *返回值:为满——真1,非满——假0

 */

BOOL IsFull(stack *p)

{

if(MAXSIZE-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

 3、判断栈为空

/*功能:判断栈为空

 * 函数名:IsEmpty

 *返回值:为空——真1,非空——假0

 */

BOOL IsEmpty(stack *p)

{

if(-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

4、进栈

/*功能:进栈

 *函数名:push

 *返回值:成功TRUN 失败FALSE

 *注:不能为满,否则进栈失败

 */

BOOL push(stack *p,StackType data)//p=&s

{

//判断栈是否为满

if(TRUE==IsFull(p))//为满

{

return FALSE;//返回失败

}

p->buf[++p->top]=data;

return TRUE;//返回成功

}

5、出栈

/*功能:出栈

 *函数名:pop

 *返回值:出栈成功TRUE 失败FALSE

 */

BOOL pop(stack *p,StackType *pd)

{

//判断是否为空,为空出栈无意义

if(TRUE==IsEmpty(p))

{

return FALSE;//出栈失败

}

*pd=p->buf[p->top--];//优先级->大于--

return TRUE;//出栈成功

}

扩展资料:

主函数:

void main()

{

//定义变量:类型 变量名

//struct st s;

struct st s;//分配空间

//初始化

InitStack(&s);

int num=0;

printf("请输入");

scanf("%d",&num);

//求二进制

while(num!=0)

{

//将余数入栈

if(FALSE==push(&s,num%2))

{

return;//结束

}

num/=2;

}

//将二进制结果取出来

char value=0;

while(FALSE!=pop(&s,&value))

{

printf("%d",value);

}

printf("\n");

}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
夫妻养狗狗把谁当主人 两人同养狗认谁当主人 什么蔬菜和水果可以美容祛斑呢? vivox60怎么查看参数配置详情 怎样查看vivo手机的屏幕参数? vivo手机怎么看手机参数 vi##手机怎么看配置? 义乌到湖州没有直达快客???必须到南浔?? 湖州到绍兴的汽车有几班? 注销驾考需要本人吗 给出栈的两种存储结构的形式名称,在这两种栈的存储结构中如何判别栈空与栈满 极光金融债权兑付会损失本金吗? 极光金融是什么?公司如何? 极光金保值吗 手机上画花怎么能不掉呀 怎么在手机短信里画一朵鲜花? 怎么像笔画写字那样在手机上画花 懂易经的同仁;天地之数五十有五,为何只取四十九? 大衍之数55还是50 嗨,你好:《易经》中,大衍之数是五十五,还是五十?贝体演卦全过程,不妨指导可好?依据卦怎样推断未来 鬼谷子百数第五十五数意思 三星note3怎么长截屏 造梦西游ol,各个各个职业介绍,刷图方法 造梦西游ol 那个角色pk最叼? 造梦西游ol那个角色后期最强大 造梦西游OL什么角色厉害 各职业特点分析攻略详解 造梦西游ol谁厉害 造梦西游ol为什么沙僧后期强 《造梦西游》ol公认最强角色是什么? 造梦西游ol后期哪个人物最厉害 济南市历城区彩石镇宅科集是哪天 栈满该如何判断? 数据结构,图中的S.top-S.base什么意思,为什么这样就能判断栈满? 关于栈满的判断 济南历城主要有哪些大集??各是哪天?? 汲城集是哪一天? 哪一天是集,阴历阳历。 遥墙大集是什么时候? 如何判断堆栈栈满和栈空 如何判断栈满和栈空 牛头镇集是哪一天? 曹村大集是哪一天? 谁道东营区有哪些集市,并是哪一天 实现链式栈的基本操作:入栈、出栈、取栈顶元素、判定栈空、栈满。 滨州滨城大集是哪天 河套大集是哪一天 璐灌集是哪一天? 景县各乡镇大集都是哪一天? 西营大集是哪一天? 寿光丰城大集是哪一天啊?