单链表逆置

今天去昆仑在线笔试,其中一题是写一个单链表逆置函数,节点如下:
struct Node
{
    int Value;
    Node *next;
};

之前还真没有写过,只好想了个笨办法了。结构体比较简单,那只交换value的值好了。

Node *getByNum(int n,Node* head)
{
    int i=0;
    while(n--)
    {
        if(head->next != NULL)
            head = head->next;
        else
            return NULL;
    }
    return head;
}
Node *reverse(Node *head)
{
    Node *tmp = head,*n1,*n2;
    int count = 0;
    while(tmp != NULL)
    {
        count++;
        tmp = tmp->next;
    }
    int temp = 0;
    for (int i=0;i<count/2;i++)
    {
        n1 = getByNum(i,head);
        n2 = getByNum(count-i-1,head);
        temp = n1->Value;
        n1->Value = n2->Value;
        n2->Value = temp;
    }
    return head;
}

回来之后拿笔在纸上画了画,发现根本不用这么麻烦。。定义一组(3个)节点指针,循环遍历一次就可以逆置过来。

Node *reverse2(Node *head)
{
    Node *F,*S,*T;
    F = head;
    S = F->next;
    T = S->next;
    head->next = NULL;
    while(T!=NULL)
    {
        S->next = F;
        F = S;
        S = T;
        T = T->next;
    }
    S->next = F;
    return S;
}
看来自己的基本功不扎实啊,以后得多练练基础了。
菊子曰 本文用菊子曰发布
posted @   Record drip  阅读(658)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示