C++里面关于栈的一些的问题,初学小弟求解
#include<stdio.h>#include<stdlib.h>typedefintSElemType;#definemax10typedefstruct{SEle...
#include <stdio.h>
#include <stdlib.h>
typedef int SElemType;
#define max 10
typedef struct
{
SElemType *base;
SElemType *top;
SElemType stacksize;
}SqStack;
int InitStack(SqStack *S)//建立栈
{
S->base=(SElemType*)malloc(100*sizeof(SElemType));
if (!S->base)
return 0;
S->top=S->base;
S->stacksize=max;
return 1;
}
int Push(SqStack &S,SElemType e)//元素入栈
{
SElemType Temp=e;
S.base=&Temp;
S.top++;
return 1;
}
int GetTop(SqStack &S,SElemType e)//取顶元素
{
SElemType Temp;
Temp=*S.base;
e=Temp;
return e;
}
void main()
{
SElemType InitStackReturn,PushReturn,IntZhi,GetReturn;
SqStack B;
InitStackReturn=InitStack (&B);
if (InitStackReturn==1)
printf("InitStack Success!!\n");
scanf("%d",&IntZhi);
PushReturn=Push(B,IntZhi);
if (PushReturn==1)
printf("Push Success!!\n");
GetReturn=GetTop(B,IntZhi);
printf("%d\n",GetReturn);
}
为什么输出值总不是我输入的数字,而是一个的地址啊? 展开
#include <stdlib.h>
typedef int SElemType;
#define max 10
typedef struct
{
SElemType *base;
SElemType *top;
SElemType stacksize;
}SqStack;
int InitStack(SqStack *S)//建立栈
{
S->base=(SElemType*)malloc(100*sizeof(SElemType));
if (!S->base)
return 0;
S->top=S->base;
S->stacksize=max;
return 1;
}
int Push(SqStack &S,SElemType e)//元素入栈
{
SElemType Temp=e;
S.base=&Temp;
S.top++;
return 1;
}
int GetTop(SqStack &S,SElemType e)//取顶元素
{
SElemType Temp;
Temp=*S.base;
e=Temp;
return e;
}
void main()
{
SElemType InitStackReturn,PushReturn,IntZhi,GetReturn;
SqStack B;
InitStackReturn=InitStack (&B);
if (InitStackReturn==1)
printf("InitStack Success!!\n");
scanf("%d",&IntZhi);
PushReturn=Push(B,IntZhi);
if (PushReturn==1)
printf("Push Success!!\n");
GetReturn=GetTop(B,IntZhi);
printf("%d\n",GetReturn);
}
为什么输出值总不是我输入的数字,而是一个的地址啊? 展开
展开全部
#include <stdio.h>
#include <stdlib.h>
typedef int SElemType;
#define max 10
typedef struct
{
SElemType *base;
SElemType *top;
SElemType stacksize;
}SqStack;
int InitStack(SqStack *S)//建立栈
{
S->base=(SElemType*)malloc(100*sizeof(SElemType));
if (!S->base)
return 0;
S->top=S->base;
S->stacksize=max;
return 1;
}
int Push(SqStack &S,SElemType e)//元素入栈
{
//SElemType Temp=e;
S.base=&e;
S.top++;
return 1;
}
int GetTop(SqStack &S,SElemType e)//取顶元素
{
SElemType Temp;
Temp=*S.base;
e=Temp;
return e;
}
void main()
{
SElemType InitStackReturn,PushReturn,IntZhi,GetReturn;
SqStack B;
InitStackReturn=InitStack (&B);
if (InitStackReturn==1)
printf("InitStack Success!!\n");
scanf("%d",&IntZhi);
PushReturn=Push(B,IntZhi);
if (PushReturn==1)
printf("Push Success!!\n");
GetReturn=GetTop(B,IntZhi);
printf("%d\n",GetReturn);
}
这样运行通过了,但没明白你的base是干什么的。
#include <stdlib.h>
typedef int SElemType;
#define max 10
typedef struct
{
SElemType *base;
SElemType *top;
SElemType stacksize;
}SqStack;
int InitStack(SqStack *S)//建立栈
{
S->base=(SElemType*)malloc(100*sizeof(SElemType));
if (!S->base)
return 0;
S->top=S->base;
S->stacksize=max;
return 1;
}
int Push(SqStack &S,SElemType e)//元素入栈
{
//SElemType Temp=e;
S.base=&e;
S.top++;
return 1;
}
int GetTop(SqStack &S,SElemType e)//取顶元素
{
SElemType Temp;
Temp=*S.base;
e=Temp;
return e;
}
void main()
{
SElemType InitStackReturn,PushReturn,IntZhi,GetReturn;
SqStack B;
InitStackReturn=InitStack (&B);
if (InitStackReturn==1)
printf("InitStack Success!!\n");
scanf("%d",&IntZhi);
PushReturn=Push(B,IntZhi);
if (PushReturn==1)
printf("Push Success!!\n");
GetReturn=GetTop(B,IntZhi);
printf("%d\n",GetReturn);
}
这样运行通过了,但没明白你的base是干什么的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询