沿岸数风景丶 发表于 2015-7-5 11:04:11

新手学习数据结构,求助顺序栈!

这是本人结合课本编写的子函数,不会写主函数,求大神帮助,目的是输入几个数或者字母 然后显示出来就好!



#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);
        }
}

~jaway~ 发表于 2015-7-6 15:29:53

呵呵

俞晨曦 发表于 2015-8-12 20:53:28

大哥,我觉得写模块函数比写主函数难.
你设置一个数组a[长一点] p = a;
你弄个循环输入然后push
再循环pop用p作为接受出栈元素的指针
再printf就行了吗.
可是你没说逆序输出还是顺序输出

彼岸花316 发表于 2015-8-19 16:06:54


刷点鱼币 只为下载 路过

浮云骑士 发表于 2015-10-22 16:22:39

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);
}
完成输入,写个输出函数就好了;
。。。。。。。

鱼C工作室.YCGZS 发表于 2015-12-6 11:21:34

自己写的,,无敌

千亩计者 发表于 2016-8-16 23:24:29

你设置一个数组a[长一点] p = a;
你弄个循环输入然后push
再循环pop用p作为接受出栈元素的指针
页: [1]
查看完整版本: 新手学习数据结构,求助顺序栈!