关于链表反转,最开始条件反射设临时变量保存,然后一个个反转,但这个思维有点乱。突然脑门中闪过一个主意,所谓反转,不就是把最新的元素放在链表头部么?
假设原始链表是List,新的链表是New,是不是List的元素一个个按顺序取出来,存放到New的头部?New就是反转后的新链表了。
以下是程序代码:
typedef struct Node{
char data;
struct Node *next;
}Node_t;
int InsertListNode(Node_t **List,char data)
{
//Node_t **curr = List;
Node_t *en = (Node_t *)malloc(sizeof(Node_t));
if(en == NULL){
return 1;
}
en->data = data;
en->next = *List;
*List = en;
return 0;
}
Node_t * ReverseList(Node_t *List)
{
Node_t *L = NULL;
while(List != NULL){
InsertListNode(&L,List->data);
List = List->next;
}
return L;
}