typedef struct _LIST_NODE_ { struct _LIST_NODE_* Next;//下一个节点 int Data; }LIST_NODE, *PLIST_NODE; void main() { //构建一个列表 PLIST_NODE v1 = (PLIST_NODE)malloc(sizeof(LIST_NODE)); PLIST_NODE FirstNode = v1; for (int i = 0;i < 5; i++) { v1->Data = i; PLIST_NODE v2 = (PLIST_NODE)malloc(sizeof(LIST_NODE)); if (i == 4) { v1->Next = nullptr; } else { v1->Next = v2; v1 = v1->Next; } } PLIST_NODE v3 = ReverseList(FirstNode);//反转列表,返回头指针 FreeMemory(v3);//回收结点内存 getchar(); } PLIST_NODE ReverseList(PLIST_NODE ListHead) { if (ListHead == nullptr) { return nullptr; } PLIST_NODE Blink = nullptr; PLIST_NODE Flink = nullptr; while (ListHead != nullptr) { /* Flink的变化 1 2 3 4 */ //Flink保存当前节点的值的下一个 Flink = ListHead->Next; //把当前的下一个置为上一个的值 //实现了指针指向反转 ListHead->Next = Blink; Blink = ListHead;//保存当前节点指针 ListHead = Flink;//最终在ListHead中保存的是最后一个节点的指针 } return Blink;//返回当前节点指针 }