打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
反转列表测试--剑指offer题目
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;//返回当前节点指针
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
理解链表,你才真正懂得C语言指针
编程的六种武器
【LeetCode刷题系列 - 002题】Add Two Numbers
闲鱼每秒千万级的实时数据处理是怎么实现的?
由浅入深 恶意软件逃避检测的六个秘密之地
寻找单链表倒数第n个节点
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服