Kiryul 2018-09-27 15:17 采纳率: 100%
浏览 1543
已采纳

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条回答 默认 最新

  • threenewbee 2018-09-27 15:45
    关注

    } 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);
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建