写了一段代码无法编译,感觉应该是指针类型转换出了问题,请有经验的程序员帮忙看一看,系统报错如下:
error C2440: “=”: 无法从“NODE *”转换为“NODE”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
我的代码如下:
#include
using namespace std;
#include
#include
struct node
{
int num;
struct node link;
};
typedef struct node NODE;
void main()
{
int n, k, m, i,j,a,b;
NODE head,q,p;
head=(NODE)malloc(sizeof(NODE));
head->link=NULL;
scanf("%d,%d,%d",&n,&k,&m);
head->num=n;
i=n-1;
q=head;//q为跟踪节点;
while(i)
{
p=(NODE)malloc(sizeof(NODE));//p为新建节点;
p->num=i;
p->link=head;
head=p;
i--;
}
q->link=head;//建立环装链表完成。
for(j=1;j<=k;j++)
{
q=q->link;
}//q停留在当前要报数的那个人身上。
//接下来开始T人。
for(a=1;a<=n;a++)//开始循环T人
{
for(b=1;b<m;b++)//开始找人
{
q=q->link;
}
printf("%d ",q->link->num);
q->link=q->link->link;
if(a%10==0) printf("\n");
}
printf("\n");
}
第一次提问,只有五个币,望大神不吝赐教。