开辟新空间
1相当于创建了一个链表,因此需要创造一个内存空间
2要定义一个移动指针
3因为是新链表,所以如果将跳出的节点插入这个新链表中,可以用头插或者尾插创造一个新节点交换此节点的数据域,这样原节点和这个节点所在的链表不会发生改变。
NODE L = (NODE)malloc(sizeof(lnode));//创造一个新的链表;L->next = NULL;NODE M = L;//移动指针 NODE newnode = (NODE)malloc(sizeof(lnode));newnode->data = p->data;newnode->next = M->next;M->next = newnode;
不开辟新空间
1需要先定义一个移动指针将头结点的下一个节点给保存了(首元节点)
2需要将其中一个链表的头结点与后面的节点断开
3在跳出一个节点是,不能直接使用移动指针,因为会使移动指针丢失,所以需要再定义一个临时指针指向跳出的节点的移动指针,为了保持移动指针能够正常跳到下一个节点,
重要因为临时指针是移动指针的 所以如果改变临时指针,则会改变移动指针的东西,所以如果移动指针要移动的话需要在临时指针操作之前跳转。
4 因为断开的一个链表中操作,原链表遭到破坏,因为直接用了当前节点的操作,会使这个节点所在的链表遭到破坏。
1 p = A->next;2 A->next = NULL;3 r = p ; p = p->next;
4
若开辟新空间 就连同结点一起开辟
若不开辟空间 就定义临时指针
如果想用直接用跳出的移动指针 ,就一定要定义临时指针