⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a实验解答.txt

📁 数据结构的全部课件(机密文件)
💻 TXT
字号:
  #include "stdio.h"
  #include "malloc.h"
  struct  node
    { int  data;
      struct  node  *next;
     };

typedef  struct node   *pointer, *lklist;




lklist  setup ( )
    { lklist head; pointer  p,q;  int x;
      head=( lklist )malloc(sizeof(lklist) ); q=head;
	scanf("%d",&x);
      while  (x!=0)
       {   p=(pointer )malloc(sizeof(pointer)) ; p->data=x;
            q->next=p;
            q=p;
	    scanf("%d",&x);
       };
       q->next=0;
      return(head);
        };

void  display (lklist  head)
    { pointer  p;
      p=head->next;

      while  (p!=0)
       {   printf("%5d",p->data ); p=p->next;};

        }

/*  删去 head1  中已在head2存在的结点  */
 void  function1 (lklist head1, lklist head2)
   { pointer p,q,s;
     p=head1;

     while (p->next)
       { q=head2->next;
	 while (q && q->data!=p->next->data) q=q->next;
	 if (q) { s=p->next;p->next=s->next;free(s);}
	   else p=p->next;
	}
    }
/*  删去 head1  中那些不在head2存在的结点  */

  void  function2 (lklist head1, lklist head2)
   { pointer p,q,s;
     p=head1;

     while (p->next)
       { q=head2->next;
	 while (q && q->data!=p->next->data) q=q->next;
	 if (!q) { s=p->next;p->next=s->next;free(s);}
	   else p=p->next;
	}
}
/* 求两集合的并集*/
  void  function3 (lklist head1, lklist head2)
   { pointer p,q,s;
     q=head2;

     while (p->next)
       { p=head1;
	  while (p->next && p->next->data!=q->next->data) p=p->next;	     if(!p->next){ s=q->next;q->next=s->next;
s->next=head1->next;	 head1->next=s;
}
	   else q=q->next;
	}
}
/*  求两集合的差集 */
    void  function4 (lklist head1, lklist head2)
   { pointer p,q,s;
     p=head1;
     q=head2;
     while ( p->next )
       { q=head2;
	 while (q->next && q->next->data!=p->next->data) q=q->next;
	 if (q->next) { s=p->next;p->next=s->next;free(s);
			s=q->next;q->next=s->next;free(s);}
	   else  p=p->next;
	}
       p->next=head2->next;free(head2);
}

/*  两有序集合的合并 */
 void  function5 (lklist head1, lklist head2)
   { pointer p,q,s;
     p=head1; q=head2;
     while (p->next)
       {
	 while (p->next && p->next->data<q->next->data) p=p->next;
	 if (p->next) { s=q->next;q->next=s->next;s->next=p->next;
			 p->next=s; p=s;}
	   else { p->next=q->next;free(head2);break;}
	}
    }
main()
{ lklist h1=0,h2=0;
  h1=setup();
  h2=setup();
  function5(h1,h2);
  printf("\n\n\n");
  display(h1);
  }






 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -