·········
#include<stdio.h>#define MAXSIZE 100
typedef int elemtype;
typedef struct
{
elemtype data;
int cur;
}Slinklist[MAXSIZE];
void Initspace(Slinklist L)
{
int i;
for(i=0;i<MAXSIZE-1;i++)
L[i].cur=i+1;
L[MAXSIZE-1].cur=0;
}
int Malloc(Slinklist Space)
{
int i=Space[0].cur;
if(i) Space[0].cur=Space[i].cur;
return i;
}
int Initlist(Slinklist L)
{
int i;
i=Malloc(L);
L[i].cur=0;
return i;
}
int Listlength(Slinklist L,int n)
{
int i,j=0;
i=L[n].cur;
while(i)
{
j++;
i=L[i].cur;
}
return j;
}
void Listinsert(Slinklist L,int ka,int i)
{
int k=ka,n,d,j;
if(i<1||i>Listlength(L,ka)+1) printf("error");
else
{
j=Malloc(L);
if(j)
{
scanf("%d",&L[j].data);
for(n=1;n<i;n++)
k=L[k].cur;
d=L[k].cur;
L[k].cur=j;
L[j].cur=d;
}
}
}
void Listdelete(Slinklist L,int ka,int i)
{
int j,k,n;
k=ka;j=0;
if(i<1||i>Listlength(L,ka)) printf("error");
else
{
while(j<i-1)
{
k=L[k].cur;
j++;
}
n=k;
k=L[k].cur;
L[n].cur=L[k].cur;
L[k].cur=L[0].cur;
L[0].cur=k;
}
}
void Listmerge(Slinklist L,int La,int Lb)
{
int lb,i,k;
k=La;
while(L[k].cur!=0)
k=L[k].cur;
lb=Lb;
while(L[lb].cur!=0)
{
lb=L[lb].cur;
i=Malloc(L);
L[k].cur=i;
L[i].data=L[lb].data;
k=i;
}
L[i].cur=0;
}
void Listfree(Slinklist L,int ka)
{
int k;
k=ka;
while(L[k].cur!=0)
k=L[k].cur;
L[k].cur=L[0].cur;
L[0].cur=ka;
}
int main()
{
Slinklist L;
int La,i,j,m,la,k,p,t;
Initspace(L);
La=Initlist(L);
scanf("%d",&k);
la=La;
for(i=0;i<k;i++)
{
m=Malloc(L);
scanf("%d",&L[m].data);
L[la].cur=m;
la=m;
}
L[la].cur=0;
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d",&t);
p=La;
k=L[La].cur;
while(k!=0)
{
if(L[k].data!=t)
{p=k;k=L[k].cur;}
else break;
}
if(k==0)
{
j=Malloc(L);
L[j].data=t;
L[j].cur=L[la].cur;
L[la].cur=j;
la=j;
}
else
{
L[p].cur=L[k].cur;
if(la==k) la=p;
}
}
la=L[La].cur;
for(i=0;i<Listlength(L,La);i++)
{
printf("%d",L[la].data);
la=L[la].cur;
}
return 0;
}
[ 本帖最后由 xdh0817 于 2011-12-17 00:56 编辑 ]