2008
08-20

下面的数据结构的程序老是报错,每个函数都报同一个错:


error C2143: syntax error : missing ‘)’ before ‘&’


error C2143: syntax error : missing ‘{‘ before ‘&’


#include<stdio.h>
#define null 0
#define ok   1
#define overflow  0
#define status int


typedef struct qnode
{
 int data;
 struct qnode *next;
}qnode,*queueptr;


typedef struct
{
 queueptr front;
 queueptr rear;
}linkqueue;


status initqueue(linkqueue &q)//构造空队列
{
 q.front=q.rear=(queueptr)malloc(sizeof(qnode));
 if(!q.front) exit(overflow);
 q.front->next=null;
 return ok;
}


status enqueue(linkqueue &q,int e)//插入数据e
{
 qnode *p;
 p=(queueptr)malloc(sizeof(qnode));
 if(!p)exit(overflow);
 p->data=e;
 p->next=null;
 q.rear->next=p;
 q.rear=p;
 return ok;
}


status visit(linkqueue &q)//访问队列显示数据
{
 qnode *p;
 p=q.front->next;
 while(p)
 {
 printf(“%d”,p->data);
 p=p->next;
 }
 return 1;
}


void main()
{
 int a;
 linkqueue node;
 initqueue(*node);
 scanf(“%d”,&a);
 while(a){
  enqueue(*node,a);
  scanf(“%d”,&a);
 }
 visit(*node);
}


c语言求救》有 1 条评论

  1. xstar 说:

    status initqueue(linkqueue &q)//构造空队列
    status enqueue(linkqueue &q,int e)//插入数据e
    status visit(linkqueue &q)//访问队列显示数据

    c语言的形参不支持引用!改为指针或用C++编译!

    initqueue(*node);
    enqueue(*node,a);
    visit(*node);

    上面对node的调用有错误!
    如果用引用就直接写node
    如果用指针就写&node        // 这里&是取地址操作符

留下一个回复