int main () {
printf("Hello world! - c.jsrun.net.");
return 0;
}
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
Status GetElem L(LinkList L,int i, ElemType &e){
P=L->next;j=1;
while(p&&j<i){
p=p->next;++j;
}
if(!p||j>i)return ERROR;
e=p->data;
return OK;
}
Status ListInset_L(LinkList &L,int i, ElemType e){
p=L;j=0;
while(p&&j<i-1){p=p->next;++j;}
if(!p||j>i-1)return ERROR;
s=(LinkList) malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
return OK;
}
Status ListDelete_L(LinkList &L,int i,ElemType &e){
p=L;j=0;
while(p->next&&j<i-1){
p=p->next;++j;
}
if(!(p->next)||j>i-1)return ERROR;
q=p->next;p->next=q->next;
e=q->data; free(q);
return OK;
}
void CreateList_L(LinkList &L ,int n){
L=(LinkList) malloc(sizeof(LNode));
L->next=NULL;
for(i=n;i>0;--i){
p=(LinkList) malloc(sizeof(LNode));
scanf(&p->data);
p->next=L->next;L->next=p;
}
}
void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){
pa=La->next;pb=Lb->next;
Lc=pc=La;
while(pa&&pb){
if(pa->data<=pb->data){
pc->next=pa;pc=pa;pa=pa->next;
}
else{pc->next=pb;pc=pb;pb=pb->next;}
}
pc->next=pa?pa:pb;
free(Lb);
}
int LocateElem_SL(SLinkList S,ElemType e){
i=S[0].cur;
while(i&&s[i].data!=e)i=S[i].cur;
return i;
}
void InitSpace_SL(SLinkList &space){
for(i=0;i<MAXSIZE-1;++i)space[i].cur;
space[MAXSIZE-1].cur=0;
}
int Malloc_SL(SLinkList &space){
i=space[0].cur;
if(space[0].cur)space[0].cur=space[i].cur;
return i;
}
void Free_SL(SLinkList &space,int k){
space[k].cur=space[0].cur;space[0].cur=k;
}
void difference(SLinkList &space,int &S){
InitSpace_SL(space);
S=Malloc_SL(space);
r=S;
scanf(m,n);
for(j=1;j<=m;++j){
i=Malloc_SL(space);
scanf(space[i].data);
space[r].cur=i;r=i;
}
space[r].cur=0;
for(j=1;j<=n;++j){
scanf(b);p=S;k=space[S].cur;
while(k!=space[r].cur&&space[k].data!=b){
p=k;k=space[k].cur;
}
if(k==space[r].cur){
i=Malloc_SL(space);
space[i].data=b;
space[i].cur=space[r].cur;
space[i].cur=i;
}
else{
space[p].cur=space[k].cur;
Free_SL(space,k);
if(r==k)r=p;
}
}
}
typedef struct DuLNode{
ElemType data;
struct DuLNode *prior;
struct DuLNode *next;
}DuLNode,*DuLinkList;
Status ListInsert_DuL(DuLinkList &L,int i,ElemType e){
if(!(p=GetElemP_DuL(L,i)))
return ERROR;
if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR;
s->data=e;
s->prior=p->prior; p->prior->next=s;
s->data=e; p->prior=s;
return OK;
}
Status ListDelete_DuL(DuLinkList &L,int i,ElemType &e){
if(!(p=GetElemP_DuL(L,i))
return ERROR;
e=p->data;
p->prior->next=p->next;
p->next->prior=p->prior;
free(p); return OK;
}
typedef struct LNode{
ElemType data;
struct LNode *next;
}*Link, *Position;
typedef struct{
Link head,tail;
int len;
}LinkList;
Status MakeNode(Link &p,ElemType e);
void FreeNode(Link &L);
Status InitList(LinkList &L);
Status DestryList(LinkList &L);
Status ClearList(LinkList &L);
Status InsFirst(Link h,Link s);
Status DelFirst(Link h,Link &q);
Status Append(LinkList &L,Link s);
Status ListInsert_L(LinkList &L ,int i,ElemType e ){
if(!LocatePos(L,i-1,h)) return ERROR;
if(!MakeNode(s,e)) return ERROR;
InsFirst(h,s);
return OK;
}
Status MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc ,int (*compare)(ElemType,ElemType)){
if(!InitList(Lc)) return ERROR;
ha=GetHead(La); hb=GetHead(Lb);
pa=NextPos(La,ha); pb=NextPos(Lb,hb);
while(pa&&pb){
a=GetCurElem(pa);b=GetCurElem(pb);
if((*compare)(a,b)<=0){
DelFirst(ha,q);Append(Lc,q);pa=NextPos(La,ha);
}else{
DelFirst(hb,q);Append(Lc,q);pb=NextPos(Lb,hb);
}
if(pa) Append(Lc,pa);
else Append(Lc,pb);
FreeNode(ha); FreeNode(hb);
return OK;
}
}
void AddPloyn(polynomial &Pa,polynomial *Pb){
ha=GetHead(Pa); hb=GetHead(Pb);
qa=NextPos(pa,ha);qb=NextPos(Pb,hb);
while(qa && qb){
a=GetCurElem(qa); b=GetCurElem(qb);
switch(*cmp(a,b)){
case -1:
ha=qa;qa=NextPos(Pa,qa);break;
case 0:
sum=a.coef+b.coef;
if(sum!=0.0){
SetCurElem(qa,sum); ha=qa;
}else{
DelFirst(ha,qa);FreeNode(qa);
}
DelFirst(hb,qb); FreeNode(qb);qb=NextPos(Pb,hb);
qa=NextPos(Pa,ha);break;
case 1:
DelFirst(hb,qb); InsFirst(ha,qb);
qb=NextPos(Pb,hb);qa=NextPos(Pa,ha);break;
}
}
if(!ListEmpty(pb)) Append(Pa,qb);
FreeNode(hb);
}
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &S);
Status DestroyStack(SqStack &S);
Status ClearStack(SqStack &S);
Status StackEmpty(SqStack &S);