关于链表的合并。

  1. struct student *merge(struct student *head, struct student *head2)

  2. {

  3.     struct student *P;

  4.     P=head->next;

  5.     while(P!=NULL)

  6.     {

  7.         P=P->next;

  8.     }

  9.     P=head2;

  10.     return head;

  11. }

这个是我的链表合并函数。


  1. struct student *merge(struct student *head, struct student *head2)

  2. {

  3.     struct student *p;

  4.      p=head;

  5.      while(p->next!=NULL)

  6.      {

  7.         p=p->next;

  8.      }

  9.         p->next=head2;

  10.      return head;

  11. }

这是答案。

我的没有合并成功,但是我的P也指向了那个空的位置啊。

为什么我的用P不可以? 而答案用P->next 却可以。


Toxic憧憬
浏览 1284回答 1
1回答

灼眼de菠萝包

你没有明白指针的实质。在你的算法里,p指向的是空位置,也就是说没有指向任何内存单元,当你执行了p=head2时,p就指向了head2头结点。但是,在链表1的尾节点中并没有存head2头结点的地址。实际上还是两条断开的链表。  建议你先搞明白指针到底是什么~ 
打开App,查看更多内容
随时随地看视频慕课网APP