回 帖 发 新 帖 刷新版面

主题:为什么编译说是这个问题?

为什么编译会说是这个错误
G:\ctrain\cpp11\Cpp2.cpp(61) : error C2039: 's' : is not a member of 'sqstack'
而且都是类似的问题,大家帮忙看看.
/*          栈的顺序表示和实现
  1.初始化栈2.插入元素3.删除栈顶元素4.取栈顶元素5.遍历顺序栈
  6.置空顺序栈                                        */
#include <stdio.h>
#include <malloc.h>
#include  <math.h>
#include  <process.h>
typedef int selemtype;
#define M 1000

typedef struct
{    selemtype *base;
    selemtype *top;
    int stacksize;
}sqstack;//定义一个栈结构体

void initsqstack(sqstack &s)//初始化一个顺序栈
{
    s.base=(selemtype *)malloc(M*sizeof(selemtype));
    if(!s.base)
        exit(OVERFLOW);
    s.top=s.base;
    s.stacksize=M;
}
void push(sqstack &s,selemtype e)//插入元素,入栈
{
    if(s.top-s.base>=s.stacksize)
    {
        s.base=(selemtype *)realloc(s.base,(s.stacksize+M)*sizeof(selemtype));
        if(!s.base)
            exit(OVERFLOW);
        s.top=s.base+s.stacksize;
        s.stacksize=M+s.stacksize;
    }
    *s.top=e;
    s.top++;
    //*(s.top++)=e;
    
    
}
selemtype  pop(sqstack &s)//删除栈顶元素,出栈
{
   selemtype e;
    if(s.top==s.base)
        return (0);
    else
    {
        e=*(s.top-1);
        s.top=s.top-1;
        //e=*--top;
        return (e);
    }
        
}
selemtype gettop(sqstack &s)//取栈顶元素
{
    if(s.base==s.top)
        return(0);
    else
    return(*s.(top-1));
}
void outstack(sqstack &s)//遍历顺序栈
{

    selemtype *p;
    p=s.base;
    
    if(s.base==s.top)
        return (0);
    else

    {
        while(p!=s.top)
        {
            printf(" %d",*p);
            p++;
        }
    }


}

void clearstack(sqstack &s)//置为空栈
{
    s.top=s.base;
}
void destory_stack(sqstack &s)
{
    free(s.base);
    s.base=NULL;
    s.top=NULL;
    s.stacksize=0;
}







int main()
{
    int flag,e,y;
    flag=1;
    int cord;
    sqstack sq;
    while(flag)
    {
        printf("\n****************************************\n");
        printf("\n              主菜单                    \n");
        printf("\n      1.    初始化顺序栈                \n");
        printf("\n      2.    插入一个元素                \n");
        printf("\n      3.    删除栈顶元素                \n");
        printf("\n      4.    取栈顶元素                  \n");
        printf("\n      5.    置空顺序表                  \n");
        printf("\n      6.    结束程序运行                \n");
        printf("\n****************************************\n");
        printf("please choose the programme :(from 1-6)\n");
        scanf("%d",&cord);
        if(cord<1||cord>6)
        {
            printf("error!!,please input again!!!");
            
        }
        else
        
        {    switch(cord)
        {
        case 1: initsqstack(sq);break;
        case 2:{
                 printf("please input a element:\n");
                 scanf("%d",&e);
                 push(sq,e);
               }
               break;
        case 3:{
               pop(sq);
               outstack(sq);
               }
               break;
        case 4: {
                y=gettop(sq);
                printf("the top element is %d\n:",y);
                outstack(sq);
                }
               break;
        case 5:{
                cleaksqstack(sq);
                outstack(sq);
               }
               break;
        case 6:flag=0;break;
               
        default :flag=0; break;
        }
        }
    }



    return 0;
}

回复列表 (共2个回复)

沙发

高手帮忙看看到底是哪里错了?

板凳

问题找到

我来回复

您尚未登录,请登录后再回复。点此登录或注册