可能重复:
反转单链表
我已经查找了链接Reverse a singlelinked list,但我真的没有得到答案。所以我重新打开这个问题。
我正在尝试反转链接列表,功能在这里:
void reverse (SLINK list)
{
NODE *p_tmp_node;
SLINK p_tmp_list;
p_tmp_list = list->next;
list->next = NULL;
while (NULL != p_tmp_list)
{
p_tmp_node = p_tmp_list;
p_tmp_list = p_tmp_list->next; // A
p_tmp_node->next = list->next;
list->next = p_tmp_node;
//p_tmp_list = p_tmp_list->next; // B
}
}
我的问题是: 语句 A 与语句 B 相同,但如果 B 执行而不是 A,则无法得到预期的结果。A和B有什么不同?
节点结构就像这样:
typedef struct tag_node
{
int elem;
struct tag_node *next;
} NODE, *SLINK;