Hello~
I'm doing my homework of Data Structure.I encounter a problem.
#include "stdlib.h"
#include "stdio.h"
#define ElemType int
#define Status int
#define OVERFLOW -2
#define OK 1
#define ERROR 0
//- - - - - 线性表的动态分配顺序存储结构 - - - - -
#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量
#define LISTINCREMENT 10 //线性表存储空间的分配增量
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList_Sq(SqList *L){ //构造一个空的线性表L。
L->elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if(!L->elem)exit(OVERFLOW);
L->length = 0;
L->listsize = LIST_INIT_SIZE;
return OK;
}//InitList_Sq
Status ListInsert_Sq(SqList *L,int i,ElemType e){ //在顺序线性表L中第i个位置之前插入新的元素e,
//i的合法值为1≤i≤ListLenth_Sq(L) +1
if ( i < 1 || i > L->length + 1 ) return ERROR; //i值不合法
if ( L->length >= L->listsize){ //当前存储空间已满,增加分配
ElemType* newbase = (ElemType *)realloc(L->elem,(L->listsize + LISTINCREMENT) *sizeof (ElemType));
if ( ! newbase)exit(OVERFLOW); //存储分配失败
L->elem = newbase; //新基址
L->listsize += LISTINCREMENT; //增加存储容量
}
ElemType* q = & (L->elem[i - 1]); //q为插入位置
ElemType *p; //另外的变量p声明
for (p = &(L->elem[L->length - 1]) ; p >= q ; --p) *(p + 1) = *p; //插入位置之后的元素右移
*q = e; //插入e
++L->length; //表长增1
return OK;
}//ListInsert_Sq
Status ListDelete_Sq(SqList *L,int i, ElemType *e){ //在顺序线性表L中删除第i个元素,并用e返回其值
//i的合法值为1≤i≤ListLength_Sq(L)
ElemType *p; //另外的变量p声明
if (( i < 1 ) || ( i > L->length)) return ERROR; //i值不合法
p = & (L->elem[i - 1]); ///p为被删除元素的位置
*e = *p; //被删除元素的值赋给e
ElemType *q; //另外的变量q声明
q = L->elem + L->length - 1; //表尾元素的位置
for ( ++p;p <= q; ++p) * (p -1) = *p; //被删除元素之后的元素左移
- -L->length; //表长减1
return OK;
}//ListDelete_Sq
int LocateElem_Sq(SqList L, ElemType e,
Status ( *compare)(ElemType, ElemType)){ //在顺序线性表L中查找第1个值与e满足compare()的元素的位序
//若找到,则返回其在L中的位序,否则返回0
int i; //另外的变量i声明
i = 1; //i的初值为第1个元素的位序
ElemType *p; //另外的变量p声明
p = L.elem; //p的初值为第1个元素的存储位置
while ( i <= L.length && ! ( * compare)( * p++ ,e)) ++i;
if ( i <= L.length ) return i;
else return 0;
}//LocateElem_Sq
void MergeList_Sq(SqList La, SqList Lb, SqList *Lc){
//已知顺序线性表La和Lb的元素按值非递减排列
//归并La和Lb得到新的顺序线性表Lc,Lc的元素也按值非递减排列
ElemType *pa,*pb,*pc,*pa_last,*pb_last;
pa = La.elem; pb = Lb.elem;
Lc->listsize = Lc->length = La.length + Lb.length;
pc = Lc->elem = (ElemType *)malloc(Lc->listsize*sizeof(ElemType));
if (!Lc->elem) exit (OVERFLOW); //存储分配失败
pa_last = La.elem + La.length - 1;
pb_last = Lb.elem + Lb.length - 1;
while(pa <= pa_last && pb <= pb_last){ //归并
if ( * pa <= *pb) *pc++= *pa++;
else *pc++= *pb++;
}
while(pa <= pa_last) *pc++ = *pa++; //插入La的剩余元素
while(pb <= pb_last) *pc++ = *pb++; //插入Lb的剩余元素
}//MergeList_Sq
int main () {
return OK;
}
Just ignore the Chinese characters in the notes above. All because I'm a Chinese.^_^
The error code : E:\C# 相关\Project01\main.c(81): error #2001: Syntax error: expected ';' but found '{'.
How do I correct my code to compile successfully?
PS:forgive my poor English -_-|||
Thanks.