函数功能没问题 不过你的调用和你的打印描述对不上 而且你没有打印任何的数值出答搭梁来
把main中的内容修改成这样
ElemType valSqStack S
InitStack(S)
PushStack(S, 1)
PushStack(S, 2)
PushStack(S, 3)
PushStack(S, 4)
TrasverStack(S)
GetTop(S, val)
cout << "栈顶元素为 " << val << endl
cout << "出栈 " << endl
PopStack(S, val)
cout << "出栈元素 " << 清运val << endl
cout << "栈的长度为 "枝帆 << lengthStack(S) <<endl
return 0
可以了,我帮你改了一下,现在可以运行了。
#include<stdio.h>#include<malloc.h>
#define STACK_INT_SIZE 10
typedef int ElemType
typedef struct
{ ElemType *base
ElemType *top
int stacksize /*当前已分配的存储空间*/
} SqStack
int InitStack(SqStack *S)//初始化栈
{ S->启灶郑base=(ElemType *)malloc(STACK_INT_SIZE*sizeof(ElemType))
if(!S->base) return 0
S->top=S->base
S->stacksize=STACK_INT_SIZE
return 1
}
int Push(SqStack 辩磨*S,ElemType e)//进栈
{ if(S->top-S->base==STACK_INT_SIZE)//栈满
return 0
else
{ *(S->top)=e
S->top++
}
}
int Pop(SqStack *S,ElemType *e)//出栈
{ if(S->top==S->base)//栈空
return 0
else
{ S->top--
*e=*(S->top)
}
}
int CreateStack(SqStack *S)
{ int e
if(S) //这里直接改为s
printf("Init Success!\n")
else
{ printf("Init Fail!\n")
return 0
}
printf("input data:(Terminated by inputing a character)\n")
while(scanf("悄颂%d",&e)&&e!=0)//加个条件,不然会变为死循环
Push(S,e)
return 1
}
void PrintStack(SqStack *S)//输出栈
{ ElemType e
while(Pop(S,&e))
printf("%3d",e)
}
int main()
{ SqStack ss
printf("1-createStack\n")
InitStack(&ss)//要先初始化栈再调用
CreateStack(&ss)
printf("2-Pop&Print\n")
PrintStack(&ss)
return 0
}
#include"stdio.h"#include<iostream.h>
#include<malloc.h>
#include<string.h>
#define STACK_INIT_SIZE 200
struct Stack{
int *base
int *top
}sq
void InitStack(Stack &s){
s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int))
s.top=s.base
}
void Push(Stack &s,int e){
*s.top=e
s.top++
}
int Pop(Stack &s){//设从键盘输入一整数的序列:a1,a2,a3,……an,
s.top--
return *s.top//试编写算法实现:用栈结构存储输入的整数,
}//当ai≠—1时,将ai进栈,当当ai≠—1时,将所正派有栈元素出
void main()//栈。算法应对异常情况(如栈满等)给出相应的信息》
{
Stack S1,S2
InitStack(S1)
InitStack(S2)
int a[10]
int i=0,b
while(i<10){
cout<衫销<"请输入第"<<i<<"个元素"<<endl
cin>>a[i]
if(a[i]==-1)
break
Push(S1,a[i])
i++}
while(S1.top!=S1.base){
b=Pop(S1)
cout<<b<举塌贺<endl}
}
上次把类型定义错了 以前是只能使用小于128的 现在把类型改成int了就使用任何数字了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)