主题:严蔚敏老师的数据结构用C我实现了算法2.13-2.17 P32
#include<stdio.h>
#define M 12
//S对应书上的space s对应书上的S
struct SLinkList{
int data;
int cur;
}component,S[M],space[M];
int r;
//int LocateElem_SL(SLinkList S,int e){
// i=S[0].
void InitSpace_SL(){
for(int i=0; i<M-1; i++)
{
S[i].data=i;
S[i].cur=i+1;
}
S[i].data=i;
S[i].cur=0;
}
int Malloc_SL(){
int i = S[0].cur;
if(S[0].cur)S[0].cur=S[i].cur;
return i;
}
void Free_SL(int k){
S[k].cur=S[0].cur;
S[0].cur=k;
}
void difference(int &s){
InitSpace_SL();
s= Malloc_SL();
int r=s,m,n,i,b,p,k;
printf("\n输入m n的值和小于二十");
scanf("%d%d",&m,&n);
for(int j=1; j<=m; j++)
{
i =Malloc_SL();
scanf("%d",&S[i].data);
S[r].cur=i;
r=i;
}
S[r].cur=0;
for(j=1; j<=n; ++j)
{
scanf("%d",&b);
p=s;
k=S[s].cur;
while(k!=S[r].cur&&b!=S[k].data)
{
p=k;
k=S[k].cur;
}
if(k==S[r].cur)
{
i=Malloc_SL();
S[i].data=b;
S[i].cur=S[r].cur;
S[r].cur=i;
//r=i;//书上没有,但我觉得应该有
}
else
{
S[p].cur=S[k].cur;
Free_SL(k);
if(r==k)r=p;
}
}
}
void main()
{
/*InitSpace_SL();
for(int i=0; i<M; i++)
printf("%d ",S[i].data);
printf("\n");
i=0;
do{
printf("%d ",S[i].data);
i=S[i].cur;
}while(i!=0);
printf("\n");*/
int s=0;
difference(s);
printf("\n");
s=S[s].cur;
while(S[s].cur!=0)
{
printf("%d ",S[s].data);
s=S[s].cur;
}
printf("%d ",S[s].data);
}
这本书的讲的真的很不错,所以觉得应该把这里的东西用C实现一遍的话应该对编程者很帮助。所以希望更多人与我同行。大家共同提高。
#define M 12
//S对应书上的space s对应书上的S
struct SLinkList{
int data;
int cur;
}component,S[M],space[M];
int r;
//int LocateElem_SL(SLinkList S,int e){
// i=S[0].
void InitSpace_SL(){
for(int i=0; i<M-1; i++)
{
S[i].data=i;
S[i].cur=i+1;
}
S[i].data=i;
S[i].cur=0;
}
int Malloc_SL(){
int i = S[0].cur;
if(S[0].cur)S[0].cur=S[i].cur;
return i;
}
void Free_SL(int k){
S[k].cur=S[0].cur;
S[0].cur=k;
}
void difference(int &s){
InitSpace_SL();
s= Malloc_SL();
int r=s,m,n,i,b,p,k;
printf("\n输入m n的值和小于二十");
scanf("%d%d",&m,&n);
for(int j=1; j<=m; j++)
{
i =Malloc_SL();
scanf("%d",&S[i].data);
S[r].cur=i;
r=i;
}
S[r].cur=0;
for(j=1; j<=n; ++j)
{
scanf("%d",&b);
p=s;
k=S[s].cur;
while(k!=S[r].cur&&b!=S[k].data)
{
p=k;
k=S[k].cur;
}
if(k==S[r].cur)
{
i=Malloc_SL();
S[i].data=b;
S[i].cur=S[r].cur;
S[r].cur=i;
//r=i;//书上没有,但我觉得应该有
}
else
{
S[p].cur=S[k].cur;
Free_SL(k);
if(r==k)r=p;
}
}
}
void main()
{
/*InitSpace_SL();
for(int i=0; i<M; i++)
printf("%d ",S[i].data);
printf("\n");
i=0;
do{
printf("%d ",S[i].data);
i=S[i].cur;
}while(i!=0);
printf("\n");*/
int s=0;
difference(s);
printf("\n");
s=S[s].cur;
while(S[s].cur!=0)
{
printf("%d ",S[s].data);
s=S[s].cur;
}
printf("%d ",S[s].data);
}
这本书的讲的真的很不错,所以觉得应该把这里的东西用C实现一遍的话应该对编程者很帮助。所以希望更多人与我同行。大家共同提高。