帮忙看看,谢了!
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int i;
struct node *next;
}node;
void fun(node *p,int i)
{
int count=1;
node *q;
q=p->next;
while(q->next!=q)
{
if(count%i==0)
{
p->next=q->next;
printf("%d",q->i);
free(q);
}
else
p=p->next;
q=p->next;
count++;
}
printf("%d",q);
}
void main()
{
int i;
int num;
printf("please input number:\n");
scanf("%d",&num);
node *circle;
node *p;
node *q;
/*初始化循环链表*/
circle=(node*)malloc(sizeof(node));
circle->i=1;
circle->next=circle;
p=circle;
for(i=2;i<=100;i++)
{
q=(node*)malloc(sizeof(node));
q->i=i;
q->next=p->next;
p->next=q;
p=p->next;
}
fun(circle,num);
}
--------------------Configuration: main - Win32 Debug--------------------
Compiling...
main.c
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(36) : error C2275: 'node' : illegal use of this type as an expression
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(8) : see declaration of 'node'
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(36) : error C2065: 'circle' : undeclared identifier
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(37) : error C2275: 'node' : illegal use of this type as an expression
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(8) : see declaration of 'node'
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(37) : error C2065: 'p' : undeclared identifier
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(38) : error C2275: 'node' : illegal use of this type as an expression
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(8) : see declaration of 'node'
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(38) : error C2065: 'q' : undeclared identifier
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(40) : warning C4047: '=' : 'int ' differs in levels of indirection from 'struct node *'
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(41) : error C2223: left of '->i' must point to struct/union
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(42) : error C2223: left of '->next' must point to struct/union
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(46) : warning C4047: '=' : 'int ' differs in levels of indirection from 'struct node *'
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(47) : error C2223: left of '->i' must point to struct/union
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(48) : error C2223: left of '->next' must point to struct/union
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(48) : error C2223: left of '->next' must point to struct/union
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(49) : error C2223: left of '->next' must point to struct/union
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(50) : error C2223: left of '->next' must point to struct/union
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(52) : warning C4047: 'function' : 'struct node *' differs in levels of indirection from 'int '
D:\My Documents\程序\VC6.0\约瑟夫环\main.c(52) : warning C4024: 'fun' : different types for formal and actual parameter 1
Error executing cl.exe.
main.obj - 13 error(s), 4 warning(s)
8 个解决方案
#1
这个代码看得清楚点
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int i;
struct node *next;
}node;
void fun(node *p,int i)
{
int count=1;
node *q;
q=p->next;
while(q->next!=q)
{
if(count%i==0)
{
p->next=q->next;
printf("%d",q->i);
free(q);
}
else
p=p->next;
q=p->next;
count++;
}
printf("%d",q);
}
void main()
{
int i;
int num;
printf("please input number:\n");
scanf("%d",&num);
node *circle;
node *p;
node *q;
/*初始化循环链表*/
circle=(node*)malloc(sizeof(node));
circle->i=1;
circle->next=circle;
p=circle;
for(i=2;i<=100;i++)
{
q=(node*)malloc(sizeof(node));
q->i=i;
q->next=p->next;
p->next=q;
p=p->next;
}
fun(circle,num);
}
#2
你用的什么编译器
除了main返回int外 gcc编译其他代码没有问题啊.
除了main返回int外 gcc编译其他代码没有问题啊.
#3
LZ,vs2008编译通过,且正常运行
#4
vc6.0也编译通过
代码没啥问题的
你rebuild一下
或者新建个工程试试
还有工程类型没选错吧
代码没啥问题的
你rebuild一下
或者新建个工程试试
还有工程类型没选错吧
#5
帮你改好了
#include <stdio.h>
#include <stdlib.h>
/* 这里定义要改成这样,你之前重名了*/
typedef struct _node
{
int i;
struct _node *next;
}node;
void fun(node *p,int i)
{
int count=1;
node *q;
q=p->next;
while(q->next!=q)
{
if(count%i==0)
{
p->next=q->next;
printf("%d",q->i);
free(q);
}
else
p=p->next;
q=p->next;
count++;
}
printf("%d",q);
}
void main()
{
int i;
int num;
node *circle;
node *p;
node *q; /*在c语言里要把所有定义放最前面*/
printf("please input number:\n");
scanf("%d",&num);
/*初始化循环链表*/
circle=(node*)malloc(sizeof(node));
circle->i=1;
circle->next=circle;
p=circle;
for(i=2;i <=100;i++)
{
q=(node*)malloc(sizeof(node));
q->i=i;
q->next=p->next;
p->next=q;
p=p->next;
}
fun(circle,num);
}
#6
谢谢你!
node *circle;
node *p;
node *q;
是我后来加上的,忘了放在scanf后面了!解决了
#7
另外问下
typedef struct _node
{
int i;
struct _node *next;
}node;
这里重名会出问题吗?我看一些书上就是重名的啊。
typedef struct _node
{
int i;
struct _node *next;
}node;
这里重名会出问题吗?我看一些书上就是重名的啊。
#8
推荐使用
typedef struct node{
****
}node
typedef struct node{
****
}node
#1
这个代码看得清楚点
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int i;
struct node *next;
}node;
void fun(node *p,int i)
{
int count=1;
node *q;
q=p->next;
while(q->next!=q)
{
if(count%i==0)
{
p->next=q->next;
printf("%d",q->i);
free(q);
}
else
p=p->next;
q=p->next;
count++;
}
printf("%d",q);
}
void main()
{
int i;
int num;
printf("please input number:\n");
scanf("%d",&num);
node *circle;
node *p;
node *q;
/*初始化循环链表*/
circle=(node*)malloc(sizeof(node));
circle->i=1;
circle->next=circle;
p=circle;
for(i=2;i<=100;i++)
{
q=(node*)malloc(sizeof(node));
q->i=i;
q->next=p->next;
p->next=q;
p=p->next;
}
fun(circle,num);
}
#2
你用的什么编译器
除了main返回int外 gcc编译其他代码没有问题啊.
除了main返回int外 gcc编译其他代码没有问题啊.
#3
LZ,vs2008编译通过,且正常运行
#4
vc6.0也编译通过
代码没啥问题的
你rebuild一下
或者新建个工程试试
还有工程类型没选错吧
代码没啥问题的
你rebuild一下
或者新建个工程试试
还有工程类型没选错吧
#5
帮你改好了
#include <stdio.h>
#include <stdlib.h>
/* 这里定义要改成这样,你之前重名了*/
typedef struct _node
{
int i;
struct _node *next;
}node;
void fun(node *p,int i)
{
int count=1;
node *q;
q=p->next;
while(q->next!=q)
{
if(count%i==0)
{
p->next=q->next;
printf("%d",q->i);
free(q);
}
else
p=p->next;
q=p->next;
count++;
}
printf("%d",q);
}
void main()
{
int i;
int num;
node *circle;
node *p;
node *q; /*在c语言里要把所有定义放最前面*/
printf("please input number:\n");
scanf("%d",&num);
/*初始化循环链表*/
circle=(node*)malloc(sizeof(node));
circle->i=1;
circle->next=circle;
p=circle;
for(i=2;i <=100;i++)
{
q=(node*)malloc(sizeof(node));
q->i=i;
q->next=p->next;
p->next=q;
p=p->next;
}
fun(circle,num);
}
#6
谢谢你!
node *circle;
node *p;
node *q;
是我后来加上的,忘了放在scanf后面了!解决了
#7
另外问下
typedef struct _node
{
int i;
struct _node *next;
}node;
这里重名会出问题吗?我看一些书上就是重名的啊。
typedef struct _node
{
int i;
struct _node *next;
}node;
这里重名会出问题吗?我看一些书上就是重名的啊。
#8
推荐使用
typedef struct node{
****
}node
typedef struct node{
****
}node