改变元素传参要传地址
传参要传地址
传参要传地址
传参要传地址!!!!!!!
重要的事情说三遍
不传地址就等着秃头叭。反正我昨天晚上找了一晚上的错误
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 40
typedef int ElemType;
typedef struct {
ElemType data[MaxSize];
int top;
}Stack;
//创建栈的结构体
void InitStack(Stack *s)
{
s->top=-1;
}
//初始化栈
void DestroyStack(Stack *s)
{
}
//销毁栈
int Push(Stack *s,ElemType x)
{
if(s->top==MaxSize-1)
return 0;
else
s->top++;
s->data[s->top]=x;
return 1;
}
//压栈
int Pop(Stack *s,ElemType *e)
{
if(s->top==-1)
return 0;
else
{
*e=s->data[s->top];
s->top--;
return 1;
}
}
//出栈
void DispStack(Stack *s)
{
int i;
for(i=s->top;i>=0;i--)
printf("%d\t",s->data[i]);
printf("\n");
}
//打印栈
int getElem(Stack *s)
{
if(s->top==-1)
return 0;
else
{
return (s->data[s->top]);
}
}
//获取栈顶元素
int StackEmpty(Stack *s)
{
if(s->top==-1)
return 1;
else
return 0;
}
//判栈空
int StackLength(Stack *s)
{
return (s->top+1);
}
//获取栈的长度
int main()
{
Stack s;
ElemType a,b,c,d,e,V;
InitStack(&s);
printf("栈初始化成功!\n");
printf("请输入要依次入栈的元素:");
scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
Push(&s,a);
Push(&s,b);
Push(&s,c);
Push(&s,d);
Push(&s,e);
printf("操作过后的栈:\n");
DispStack(&s);
printf("获取栈顶元素:%d\n",getElem(&s));
printf("该栈的长度为:%d",StackLength(&s));
printf("该栈是否为空?%s\n",StackEmpty(&s)?"空":"非空");
printf("出栈:\n");
while(!StackEmpty(&s))
{
Pop(&s,&V);
printf("%d",V);
}
printf("\n");
printf("释放栈");
DestroyStack(&s);
return 0;
}
//主函数
![](https://img-blog.csdnimg.cn/20190602114051471.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dqeTIwMDAxMDE3,size_16,color_FFFFFF,t_70)