C:将元素从一个列表移动到另一个列表

时间:2018-03-25 14:05:16

标签: c list linked-list

(程序在C中)我在这里有自制的列表: enter image description here

  • a1,a2,a3 ...和b1,b2 ...是结构,每个都存储一些数据和一个指向下一个结构的指针(下一个)(图中它们下面的那个),
  • temp,top1,head和head 1只是指向这些结构的指针,它们不存储其他数据,

我想将情况改为以下情况: I'm always moving the first element of the list on the left and putting in at the end of the list on the right

我总是移动左边列表的第一个元素,然后放在右边列表的末尾

我现在不确定我是否需要 temp ,我很可能不会。 如何实现第二张图片中显示的内容?

我显然不能以明显的方式使用a1,a2,a3,b1和b2,因为他们没有名字,他们是由malloc动态分配的(是的,我知道它很糟糕) ,但在我正式知道之前,我的老师希望我出于某种原因了解所有相关内容。)

3 个答案:

答案 0 :(得分:1)

请按照以下步骤操作:

 while(head!=NULL)
 {
    head=head->next;
    top1->next=temp;
    top1=temp;
    temp=head;
 }

listA 是左侧的列表,我假设 top1 必须指向 listB 的最后一个节点(右侧列表) )。

答案 1 :(得分:0)

  1. 存储您正在移动的节点(您有临时节目)。
  2. temp = list_a->head;

    1. 将第一个列表的头部移动到第二个节点。
    2. list_a->head = list_a->head->next;

      1. 将tmp添加到最后一个节点的第二个列表。 (最后一个节点存储在top1中)
      2. top1->next = temp;

        1. 移动的节点指向第一个列表的新头部,因此删除指针。
        2. temp->next = NULL;

          1. 不需要,但图片说temp需要指向list_a的新头部。
          2. temp = list_a->head;

            1. 将top1移至指向已移动的节点。
            2. top1 = top1->next;

              如果我的答案不够清楚,请尝试逐步绘制。

答案 2 :(得分:-1)

首先,您根本不需要<!DOCTYPE html> <html> <head> <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <style> #image{ -webkit-transition-duration: 0.8s; -moz-transition-duration: 0.8s; -o-transition-duration: 0.8s; transition-duration: 0.8s; -webkit-transition-property: -webkit-transform; -moz-transition-property: -moz-transform; -o-transition-property: -o-transform; transition-property: transform; } </style> </head> <body> <img id="image" width="50" height="50" src="https://upload.wikimedia.org/wikipedia/commons/8/82/Facebook_icon.jpg"> <script> $(function(){ var rotateByAngle = 90; $("#image").click(function(){ rotateByAngle+= 90; $(this).css({ "transform": "rotate(" + rotateByAngle + "deg)", "-webkit-transform" : "rotate(" + rotateByAngle + "deg)" }) }); }); </script> </body> </html> 指针。指针temp足以管理链接列表。但是对于列表末尾的快速插入,您始终可以保持指向最后一个节点的head指针。

在你的结构中last指针没有扮演任何角色。在任何时候,您都可以创建一个temp指针来操作列表并分配列表中第二个节点的地址,如下所示: -

temp

如果列表中的结构属于同一类型,则可以轻松地将每个元素移动到下一个列表。在第二个结构中,你必须再引入一个 temp = head->next; 指针,它可以存储第一个列表元素的地址。

要首先移动元素,您需要到达最后一个元素(根据您的要求),您可以像下面那样实现: -

next