新手学习数据结构,求助顺序栈!
这是本人结合课本编写的子函数,不会写主函数,求大神帮助,目的是输入几个数或者字母 然后显示出来就好!#define TRUE 1
#define FALSE 0
#define Stack_Size 50
/*顺序栈*/
typedef struct
{
StackElementType elem; /*用来存放栈中元素的一维数组*/
int top; /*用来存放栈顶元素的下标,top为-1表示空栈*/
}SeqStack;
/*初始化*/
void InitStack(SeqStack *S)
{
/*构造一个空栈S*/
S->top = -1;
}
/*判栈空*/
int IsEmpty(SeqStack *S) /*判断栈S为空栈时返回值为真,反之为假*/
{
return(S->top==-1?TRUE:FALSE);
}
/*判栈满*/
int IsFull(SeqStack *S) /*判断栈S为满栈时返回值为真,反之为假*/
{
return(S->top==Stack_Size-1?TRUE:FALSE);
}
int Push(SeqStack *S,StackElementType x)
{
if(S->top==Stack_Size-1)
return(FALSE);/*栈已满*/
S->top++;
S->elem = x;
return(TRUE);
}
int Pop(SeqStack *S,StackElementType *x)
{
/* 将栈S的栈顶元素弹出,放到x所指的存储空间中 */
if(S->top == -1)/*栈为空*/
return(FALSE);
else
{
*x = S->elem;
S->top--; /* 修改栈顶指针 */
return(TRUE);
}
} 呵呵 大哥,我觉得写模块函数比写主函数难.
你设置一个数组a[长一点] p = a;
你弄个循环输入然后push
再循环pop用p作为接受出栈元素的指针
再printf就行了吗.
可是你没说逆序输出还是顺序输出
刷点鱼币 只为下载 路过 seqstack *l;
int n;
StackElementType x;
l=InitStack(l);
cout<<"please input element number:";cin>>n;
cout<<"please input element:"
for(int i=0;i<n;i++)
{
cin>>x;
Push(* l, x);
}
完成输入,写个输出函数就好了;
。。。。。。。
自己写的,,无敌 你设置一个数组a[长一点] p = a;
你弄个循环输入然后push
再循环pop用p作为接受出栈元素的指针
页:
[1]