题解 | #牛牛的链表交换#

牛牛的链表交换

https://www.nowcoder.com/practice/0e009fba6f3d47f0b5026b5f8b0cb1bc

#include <stdio.h>
#include <stdlib.h>

//声明结构体
typedef struct List
{
    int date;
    struct List* next;
}List;

//新节点
List* BuyNewCode(int x)
{
    List* new=(List*)malloc(sizeof(List));
    new->date=x;
    new->next=NULL;
    return new;
}

//尾插
void PushBack(List** pplist,int x)
{
    List* newcode=BuyNewCode(x);
    if(*pplist==NULL)
    {
        *pplist=newcode;
    }
    else
    {
        //注意细节
        List* tail=*pplist;
        while(tail->next!=NULL)
        {
            tail=tail->next;
        }
        tail->next=newcode;
    }
}

//交换位置
void ChangePosition(List** pplist)
{
    //交换前两个节点
    List* cur=*pplist;
    int temp=cur->date;
    cur->date=cur->next->date;
    cur->next->date=temp;

    //交换后2个节点
    List* tail1=*pplist;
    List* tail2=(*pplist)->next;
    while(tail2->next!=NULL)
    {
        tail1=tail1->next;
        tail2=tail2->next;
    }
    temp=tail1->date;
    tail1->date=tail2->date;
    tail2->date=temp;
}

//打印输出
void Print(List* plist)
{
    List* cur=plist;
    while(cur!=NULL)
    {
        printf("%d ",cur->date);
        cur=cur->next;
    }
}
int main() 
{
    List* plist=(List*)malloc(sizeof(List));
    plist=NULL;
    int n=0;
    scanf("%d",&n);
    int i=0;
    int k=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&k);
        PushBack(&plist,k);
    }
    ChangePosition(&plist);
    Print(plist);
    return 0;
}

全部评论

相关推荐

06-27 18:53
门头沟学院 Java
这样才知道自己不适合搞代码,考公去咯
只爱喝白开水:我也发现不适合搞代码,打算转非技术方向了
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务