数据结构实验一 线性表的实现与多项式的加法
在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);
}