博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单链表逆置
阅读量:6352 次
发布时间:2019-06-22

本文共 874 字,大约阅读时间需要 2 分钟。

今天去昆仑在线笔试,其中一题是写一个单链表逆置函数,节点如下:

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;
}
看来自己的基本功不扎实啊,以后得多练练基础了。
 本文用 发布

转载于:https://www.cnblogs.com/mashang/archive/2011/03/28/1997978.html

你可能感兴趣的文章
nodejs启动webserver服务
查看>>
小偷被抓叫嚣:我不偷警察没饭吃
查看>>
python初学—-实现excel里面读数据进行排序
查看>>
用户体验升级后 “谁行谁上”让百度Q4财报更有底气
查看>>
直播相关学习链接
查看>>
使用RPM包工具和源码包编译安装Linux应用程序
查看>>
VoIP——开启免费通话新时代的先锋
查看>>
Linux下rsync的用法
查看>>
apache虚拟主机、日志轮询、日志统计、去版本优化
查看>>
java代码实现开启openoffice服务和关闭sffice.exe进程
查看>>
docker镜像的使用方法
查看>>
提升HTTPS安全评级
查看>>
iOS开发过程中的心得
查看>>
QOS配置命令
查看>>
linux安装搭建media-wiki
查看>>
使用 MPI for Python 并行化遗传算法
查看>>
widget
查看>>
paramiko安装及使用
查看>>
Java私塾:研磨设计模式 之 访问者模式(Visitor)
查看>>
我的友情链接
查看>>