顺序栈-简单的实现

顺序栈-简单的实现,第1张

函数功能没问题 不过你的调用和你的打印描述对不上 而且你没有打印任何的数值出答搭梁来

把main中的内容修改成这样

ElemType val

SqStack 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了就使用任何数字了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12486607.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存