回 帖 发 新 帖 刷新版面

主题:小弟求教高手

void difference(SLinkList &space, int &S){
//依次输入集合A和B的元素,在一维数组space中建立集合(A-B)U(B-A)
//的静态链表,S为头指针。假设备用空间足够大, space[0].cur为其头指针
InitSpace_SL(space);         // 初始化备用空间
S=Malloc_SL(space);         // 生成S的头结点
r=S;                                     // r指向S的当前最后结点
scanf(m,n);                         // 输入A和B的元素个数 
for(j=1;j<=m;++j){          // 建立集合A的链表
        i=Malloc_SL(space);  // 分配结点
       scanf(space[i].data);  // 输入A的元素值
              space[r].cur= i;r= i;   // 插入到表尾
      }//for
space[r].cur=0;               // 尾结点的指针为空
for(j=1;j<=n;++j){ // 依次输入B的元素,如不在当前表中,
                                   //则插入,否则删除
    scanf(b);  p=S; k= space[S].cur // k指向集合A中第1个结点
    while(k!=space[r]&&space[k].data!=b){//当前表中查找
          P=k;k=space[k].cur;
        }//while
if (k==space[r].cur){// 当前表中不存在该元素,插入在r所指结
                                     //点之后,且r的位置不变
         i=Malloc_SL(space);
         space[i].data=b;
         space[i].cur=space[r].cur;
         space[i].cur=i;
  }//if
else{                                      //该元素已在表中,删除之
         space[p].cur=space[k].cur;
          Free_SL(space,k);
         if (r==k)    r=p; //若删除的是r所指结点,则需修改尾指针
      }//else
   }//for
}//difference
刚刚开始学习数据结构!这个算法看不太懂,请高手指点!!
最好能将每一部中变量的指给标注一下,谢谢了!!

回复列表 (共3个回复)

沙发

不是已经有这么详细了吗?如果你自己看不懂,讲给你听也听不懂.听懂了再遇到这样的程序也看不懂.自己看吧.似乎中国好多学生就这个德性.(骂大了哈)

板凳

多谢高手指教!!
我会更加努力!

3 楼

小弟已经把这个算法看懂了,也会一直自主学习,再一次谢谢高手的提点

我来回复

您尚未登录,请登录后再回复。点此登录或注册