语法错误 : 缺少“)”(在“&”的前面) 烦死了我检查过了没有少括号什么的呀,到底为什么错啊?

#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#define STACK_SIZE 100 /* 栈初始向量大小 */
#define STACKINCREMENT 10 /* 存储空间分配增量 */
#define ERROR 0
#define OVERFLOW -2
#define OK 1
typedef int Status;
/*int InitStack(SqStack &S);
int GetTop(SqStack &S,char &e);
int Push(SqStack &S,char e);
int Pop(SqStack &S,char &e);
int InitQueue(LinkQueue &Q);
int EnQueue(LinkQueue &Q,char e);
int DeQueue(LinkQueue &Q, char &e);*/
void translate(char c);
void translate2(char e);
int count;
char input[100];
typedef struct {
char *base;
char *top;
int stacksize;
}SqStack;
typedef struct QNode{ //定义队结构体
char data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{ //定义队头队尾指针 结构体
QueuePtr front;
QueuePtr rear;
}LinkQueue;
LinkQueue Q;
Status InitStack(SqStack &S)
{
S.base=(char *)malloc(STACK_SIZE*sizeof(char));
if(!S.base) return (OVERFLOW);
S.top=S.base;
S.stacksize=STACK_SIZE;
return OK;
}
Status GetTop(SqStack S, char &e)
{
if(S.top=S.base) return ERROR;
e=*(S.top-1);
return OK;
}
Status Push (SqStack &S, char e)
{
if (S.top - S.base >= S.stacksize) {
S.base = (char *) realloc ( S.base,
(S.stacksize + STACKINCREMENT)*sizeof (char));
if (!S.base) return (OVERFLOW); //存储分配失败
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++ = e;
return OK;
}
Status Pop (SqStack &S, char &e) {
if (S.top == S.base) return ERROR;
e = *--S.top;
return OK;
}
Status InitQueue(LinkQueue &Q) //建立一个空队
{
Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
if(!Q.front) return (OVERFLOW);
Q.front->next=NULL;
return OK;
}
Status EnQueue(LinkQueue &Q,char e) //插入元素e为新的队尾元素
{
QueuePtr p;
p = (QueuePtr)malloc(sizeof(QNode));
if(!p) return (OVERFLOW);
p->data = e;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return OK;
}
Status DeQueue(LinkQueue &Q, char &e) //删除Q的队头元素并用e返回
{
QueuePtr p;
if(Q.front==Q.rear) return (OVERFLOW);
p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if(Q.rear==p)
Q.rear = Q.front;
free(p);
return OK;
}
居然说我输入字数超过限制
void translate(char c)
{
int l,i;
char a[10];
switch(c) //将首次转换后的类人类语言赋值于a字符串
{
case'A':strcpy(a,"ase");break;
case'B':strcpy(a,"tAdA");break;
default:strcpy(a,"???");
}
l = strlen(a);
for(i=0;i<l;i++) //对于a中的元素逐个判断其大小写
{
if(a[i]>='a'&&a[i]<='z')
EnQueue(Q,a[i]);
else if(a[i]>='A'&&a[i]<='Z')
translate(a[i]); //运用递归实现大写字母间的转换关系
}
}

第1个回答  2013-03-29
C语言中没有SqStack &这种类型,也就是说Status InitStack(SqStack &S)这种在C++中合理的类型是不能通过C编译器的编译的……追问

啊真的耶我把它改成cpp类型的就成功了耶,可是我想用c的形式怎么办呢

本回答被提问者采纳
第2个回答  2013-03-29
函数定义时的Status EnQueue(LinkQueue &Q,char e) 其中char e的e前没&,与声明不符合。

希望对你有帮助,望采纳谢谢。
相似回答