#include <stdio.h>
#include <stdlib.h>
/**
* 头插法
* @return
*/
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
void ListReserve(LNode *L){
//分配一个辅助头节点
LinkList head = (LNode*)malloc(sizeof (LNode));
head->next = NULL;
while (L->next != NULL)
{
// 按顺序拆下每个节点
LNode *p = L->next;
L->next = L->next->next;
//头插法
p->next = head->next;
head->next = p;
}
}
这里可以想象head是另一个新创建的空链表的头,然后进行头插的关键两步,注释处