in function 'xx'; error : expected';' before '}'

数据结构实验一 线性表的实现与多项式的加法
在codeblock下编译出错
in function 'Add':
error : expected';' before '}'

代码如下:
#include
#include
#define ERROR 0
#define OK 1
#define Overflow 2
#define Underflow 3
#define Notpresent 4
#define Duplicate 5

typedef int Elemtype;
typedef struct
{
int n;
int maxLength;
Elemtype *element;
}SeqList;

typedef int Status;

typedef struct PNode
{
int coef;
int exp;
struct PNode* link;
}PNode;
typedef struct
{
struct PNode *head;
}polynominal;

Status Init(SeqList *L,int mSize)
{
L->maxLength=mSize;
L->n=0;
L->element=malloc(sizeof(Elemtype)*mSize);
if(!L->element)
return ERROR;
return OK;
}

Status Find(SeqList L,int i,Elemtype *x)
{
if(iL.n-1)
return ERROR;
*x=L.element[i];
return OK;
}

Status Insert(SeqList *L,int i,Elemtype x)
{
int j;
if(i<-1||i>L->n-1)
return ERROR;
if(L->n==L->maxLength)
return ERROR;
for(j=L->n-1;j>i;j--)
L->element[j+1]=L->element[j];
L->element[i+1]=x;
L->n=L->n+1;
return OK;
}

Status Delete(SeqList *L,int i)
{
int j;
if(iL->n-1)
return ERROR;
if(!L->n)
return ERROR;
for(j=i+1;jn;j++)
L->element[j-1]=L->element[j];
L->n --;
return OK;
}

void Output(SeqList L)
{
int i;
//if(!L.n)
//return ERROR;
for(i=0;i<L.n;i++)
printf("%d ",L.element[i]);
//return OK;
}

void Destroy(SeqList *L)
{
(*L).n=0;
(*L).maxLength=0;
free((*L).element);
}

void Create(polynominal *p)
{
PNode *pn,*pre,*q;
p->head=malloc(sizeof(PNode));
p->head->exp=-1;
p->head->link=NULL;
for(;;)
{
pn=malloc(sizeof(PNode));
printf("coef:\n");
scanf("%d",&pn->coef);
printf("exp:\n");
scanf("%d",&pn->exp);
if(pn->exp pre=p->head;
q=p->head->link;
while(q&&q->exp>pn->exp)
{
pre=q;
q=q->link;
}
pn->link=q;
pre->link=pn;
}
}

void Add(polynominal *px,polynominal *qx)
{
PNode *q,*q1=qx->head,*p,*temp;
p=px->head->link;
q=q1->link;
while(p&&q)
{
while(p->expexp)
{
q1=q;
q=q->link;
}
if(p->exp==q->exp)
{
q->coef=q->coef+p->coef;
if(q->coef==0)
{
q1->link=q->link;
free(q);
q=q1->link;
p=p->link;
}
else
{
q1=q;
q=q->link;
p=p->link;
}
}
else
{
temp=malloc(sizeof(PNode));
temp->coef=p->coef;
temp->exp=p->exp;
temp->link=q1->link;
q1->link=temp;
p=p->link;
}
} 1
}

void main()
{
int i,j,k,m,num,x,y;
SeqList list;
printf("请输入元素的最大空间:");
scanf("%d",&m);
Init(&list,m);
printf("请输入元素的个数:");
scanf("%d",&num);
list.n=num;
printf("请输入各个元素:");
printf("\n");
for(i=0;i<num;i++)
scanf("%d",&list.element[i]);
Output(list);
printf("请输入要插入元素的位置:");
scanf("%d",&i);
printf("请输入要插入的元素:");
scanf("%d",&k);
Insert(&list,i,k);
Output(list);
printf("请输入要查找的位置:");
scanf("%d",&j);
Find(list,j,&x);
printf("%d",x);
printf("请输入要删除的元素下标:");
scanf("%d",&y);
Delete(&list,y);
Output(list);
Destroy(&list);

polynominal px;
Create(&px);
polynominal qx;
Create (&qx);

Add(&px,&qx);

}

} 1
这里多了一个1

另外
L->element=(Elemtype *)malloc(sizeof(Elemtype)*mSize);
temp=(PNode *)malloc(sizeof(PNode)); 这里少类型转换,有好几个

不考虑运行,只谈消除编译错误,修改后完整的程序如下:

 #include<stdlib.h>
#include<stdio.h>
#define ERROR 0
#define OK 1
#define Overflow 2
#define Underflow 3
#define Notpresent 4
#define Duplicate 5

typedef int Elemtype;
typedef struct
{
    int n;
    int maxLength;
    Elemtype *element;
}SeqList;

typedef int Status;


typedef struct PNode
{
    int coef;
    int exp;
    struct PNode* link;
}PNode;
typedef struct
{
    struct PNode *head;
}polynominal;



Status Init(SeqList *L,int mSize)
{
    L->maxLength=mSize;
    L->n=0;
    L->element=(Elemtype *)malloc(sizeof(Elemtype)*mSize);
    if(!L->element)
    return ERROR;
    return OK;
}

Status Find(SeqList L,int i,Elemtype *x)
{
    if(i<0||i>L.n-1)
    return ERROR;
    *x=L.element[i];
    return OK;
}

Status Insert(SeqList *L,int i,Elemtype x)
{
    int j;
    if(i<-1||i>L->n-1)
    return ERROR;
    if(L->n==L->maxLength)
    return ERROR;
    for(j=L->n-1;j>i;j--)
    L->element[j+1]=L->element[j];
    L->element[i+1]=x;
    L->n=L->n+1;
    return OK;
}

Status Delete(SeqList *L,int i)
{
    int j;
    if(i<0||i>L->n-1)
    return ERROR;
    if(!L->n)
    return ERROR;
    for(j=i+1;j<L->n;j++)
    L->element[j-1]=L->element[j];
    L->n --;
    return OK;
}

void Output(SeqList L)
{
    int i;
    //if(!L.n)
    //return ERROR;
    for(i=0;i<L.n;i++)
    printf("%d ",L.element[i]);
    //return OK;
}

void Destroy(SeqList *L)
{
    (*L).n=0;
    (*L).maxLength=0;
    free((*L).element);
}

void Create(polynominal *p)
{
    PNode *pn,*pre,*q;
    p->head=(PNode *)malloc(sizeof(PNode));
    p->head->exp=-1;
    p->head->link=NULL;
    for(;;)
    {
        pn=(PNode *)malloc(sizeof(PNode));
        printf("coef:\n");
        scanf("%d",&pn->coef);
        printf("exp:\n");
        scanf("%d",&pn->exp);
        if(pn->exp<0)  break;
        pre=p->head;
        q=p->head->link;
        while(q&&q->exp>pn->exp)
        {
            pre=q;
            q=q->link;
        }
        pn->link=q;
        pre->link=pn;
    }
}



void Add(polynominal *px,polynominal *qx)
{
    PNode *q,*q1=qx->head,*p,*temp;
    p=px->head->link;
    q=q1->link;
    while(p&&q)
    {
        while(p->exp<q->exp)
        {
            q1=q;
            q=q->link;
        }
        if(p->exp==q->exp)
        {
            q->coef=q->coef+p->coef;
            if(q->coef==0)
            {
                q1->link=q->link;
                free(q);
                q=q1->link;
                p=p->link;
            }
            else
            {
                q1=q;
                q=q->link;
                p=p->link;
            }
        }
        else
        {
            temp=(PNode *)malloc(sizeof(PNode));
            temp->coef=p->coef;
            temp->exp=p->exp;
            temp->link=q1->link;
            q1->link=temp;
            p=p->link;
        }
    }
}

void main()
{
    int i,j,k,m,num,x,y;
    SeqList list;
    printf("请输入元素的最大空间:");
    scanf("%d",&m);
    Init(&list,m);
    printf("请输入元素的个数:");
    scanf("%d",&num);
    list.n=num;
    printf("请输入各个元素:");
    printf("\n");
    for(i=0;i<num;i++)
    scanf("%d",&list.element[i]);
    Output(list);
    printf("请输入要插入元素的位置:");
    scanf("%d",&i);
    printf("请输入要插入的元素:");
    scanf("%d",&k);
    Insert(&list,i,k);
    Output(list);
    printf("请输入要查找的位置:");
    scanf("%d",&j);
    Find(list,j,&x);
    printf("%d",x);
    printf("请输入要删除的元素下标:");
    scanf("%d",&y);
    Delete(&list,y);
    Output(list);
    Destroy(&list);

    polynominal px;
    Create(&px);
    polynominal qx;
    Create (&qx);

    Add(&px,&qx);
}