问题描述
- c语言程序编译出错error: syntax error before "typedef"
-
设计的一个顺序循环队列和测试函数,结果编译的时候就有好多error: syntax error before ""不知道要怎么改,求帮助~
这是我的代码:
头文件:
#include
typedef struct SeqCQueue
{
DataType queue[MaxQueueSize];
int MaxQueueSize;
int rear;
int front;
}struct SeqCQueue;
void QueueInitiate(SeqCQueue *Q)
{
Q->rear=0;
Q->front=0;
}
int QueueNotEmpty(SeqCQueueQ)
{
if(rear==front)
return 1;
else
return 0;
}
int QueueAppend(SeqCQueue*Q,DataType x)
{
if((rear+1)%MaxQueueSize==front)
{
printf("队列已满无法插入!
");
return 0;
}
else
{
Q->queue[Q->rear]=x;
Q->rear=(Q->rear+1)%MaxQueueSize;
return 1;
}
}
int QueueDele(SeqCQueue*Q,DataType*d)
{
if(rear==front)
{
printf("队列已空,无数据元素出队列!
");
return 0;
}
else
{
*d=Q->queue[Q->front];
Q->front=(Q->front+1)%MaxQueueSize;
return 1;
}
}
int QueueGet(SeqCQueue Q,DataType*d)
{
if(rear==front)
{
printf("队列已空,无数据元素可取!
");
return 0;
}
else
{
*d=Q.queue[Q.front];
return 1;
}
}
测试函数:
#include
#include
typedef struct
#include"2.h"
int main(void)
{
typedef struct
{int queue[MaxQueueSize]; int rear; int front;
}SeqCQueue;
void QueueInitiate(SeqCQueue*Q)
int QueueNotEmpty(SeqCQueue*Q)
int i,x=1;
for(i=0;i<10;i++)
{
QueueAppend(SeqCQueue*Q,DataType x)
x++;
}
QueueGet(SeqCQueue Q,DataType*d)
printf("此队列队头元素为%d",*d);
for(i=0;i<10;i++)
{
QueueDele(SeqCQueue*Q,DataType*d)
printf("%d",*d);
free(d)
}
}
解决方案
syntax error : missing ';' before '*
error C2143: syntax error : missing ';' before 'tag::id' 'BOOL' : redefinition; typedef cannot be ov
phpmyadmin建表出错 #1064 - You have an error in your SQL syntax;
解决方案二:
楼主重新发一下代码吧,把代码放在代码框里面发
typedef struct SeqCQueue
{
DataType queue[MaxQueueSize];
int MaxQueueSize;
int rear;
int front;
}struct SeqCQueue;
最好改成
typedef struct SeqCQueue
{
DataType queue[MaxQueueSize];
int MaxQueueSize;
int rear;
int front;
}SeqCQueue;
DataType又是啥?MaxQueueSize也看不到?
解决方案三:
多了一个语句#include,这句话后面没有包含头文件,所以报错了。
解决方案四:
头文件:
#include
typedef struct SeqCQueue
{
DataType queue[MaxQueueSize];
int MaxQueueSize;
int rear;
int front;
}struct SeqCQueue;
void QueueInitiate(SeqCQueue *Q)
{
Q->rear=0;
Q->front=0;
}
int QueueNotEmpty(SeqCQueueQ)
{
if(rear==front)
return 1;
else
return 0;
}
int QueueAppend(SeqCQueue*Q,DataType x)
{
if((rear+1)%MaxQueueSize==front)
{
printf("队列已满无法插入!
");
return 0;
}
else
{
Q->queue[Q->rear]=x;
Q->rear=(Q->rear+1)%MaxQueueSize;
return 1;
}
}
int QueueDele(SeqCQueue*Q,DataType*d)
{
if(rear==front)
{
printf("队列已空,无数据元素出队列!
");
return 0;
}
else
{
*d=Q->queue[Q->front];
Q->front=(Q->front+1)%MaxQueueSize;
return 1;
}
}
int QueueGet(SeqCQueue Q,DataType*d)
{
if(rear==front)
{
printf("队列已空,无数据元素可取!
");
return 0;
}
else
{
*d=Q.queue[Q.front];
return 1;
}
}
测试函数:
#include
#include
typedef struct
#include"2.h"
int main(void)
{
typedef struct
{
int queue[MaxQueueSize];
int rear;
int front;
}SeqCQueue;
void QueueInitiate(SeqCQueue*Q)
int QueueNotEmpty(SeqCQueue*Q)
int i,x=1;
for(i=0;i<10;i++)
{
QueueAppend(SeqCQueue*Q,DataType x)
x++;
}
QueueGet(SeqCQueue Q,DataType*d)
printf("此队列队头元素为%d",*d);
for(i=0;i<10;i++)
{
QueueDele(SeqCQueue*Q,DataType*d)
printf("%d",*d);
free(d)
}
return 0;
}
@