永发信息网

cannot convert from 'StackNode *' to 'struct stacknode *

答案:2  悬赏:40  手机版
解决时间 2021-02-07 04:15
  • 提问者网友:欲望失宠
  • 2021-02-06 20:28
#include "ds.h"

using namespace std;

//------------结构体定义--------------------
typedef struct
{
int row;
int col;
}postype;

typedef struct
{ postype seat; //当前的坐标位置
directivetype di;
}elemtype;

typedef struct
{
elemtype elem;
struct stacknode *next;
} StackNode ,*LinkStack;//////////////////这里有问题
//-------栈函数---------------------------------
int InitStack(LinkStack &S)
{ S=NULL;
return OK; //构造空栈

}

int StackEmpty(LinkStack S)
{ if(S==NULL)
return 1;
else
return 0; //判断栈是否为空

}
int Push(LinkStack &S, elemtype e)
{ LinkStack p;
p=(LinkStack )malloc(sizeof(StackNode));
p->elem=e;
p->next= S;//////////////////////这里有问题
S=p;
return OK; //在栈顶压入新数据元素

}
int Pop(LinkStack &S, elemtype e) //栈顶元素出栈
{ LinkStack p;
if(!StackEmpty(S))
{
e=S->elem;
p=S;
S=S->next;///////////////这里有问题
free(p);
return OK;
}
else
{
cout<<"栈已空,无值出栈!\n";
return ERROR;
}

}

。。。error C2440: '=' : cannot convert from 'StackNode *' to 'struct stacknode *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

。。。error C2440: '=' : cannot convert from 'struct stacknode *' to 'StackNode *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

帮忙看一下

很急啊!
最佳答案
  • 五星知识达人网友:蓝房子
  • 2021-02-06 21:04
你应该这样定义:
typedef struct
{
elemtype elem;
StackNode *next;
} StackNode ,*LinkStack;

既然是StackNode 的指针,为什么大小写还不一样呢?这可是大小写敏感的!
全部回答
  • 1楼网友:神鬼未生
  • 2021-02-06 21:34
就是定义一个这种结构体类型的指针,比如说你定义了typedef struct stacknode { selemtype data; struct stacknode * next; }stacknode,*linkstackptr;,然后我在使用的时候这样定义了一个变量 linkstackptr sss;这个定义就等同于stacknode *sss;这样定义
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯