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

牛牛的链表交换

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

#include <stdio.h>
#include <stdlib.h>
//结构体定义
typedef struct Node
{
    int num;
    struct Node *next;    
}LinkNode;

int main(int argc, char const *argv[])
{
    int n,i;
    scanf("%d", &n);//获取元素个数
    LinkNode *head = (LinkNode *)malloc(sizeof(LinkNode));
    LinkNode *tail;
    head->next = NULL;
    scanf("%d", &head->num);
    tail = head;
    //通过循环创建链表
    for (i = 0; i < n-1; ++i)
    {
        LinkNode *p = (LinkNode *)malloc(sizeof(LinkNode));
        scanf("%d", &p->num);
        p->next = NULL;
        tail->next = p;
        tail = tail->next;
    }
    
    //将tail指向head,为了后续遍历
    tail = head;
    int count;//计数
    LinkNode* p = tail->next;
    //交换前两个元素
    count = tail->num;
    tail->num = p->num;
    p->num = count;
    tail = p->next;
    
    //交换后两个元素
    tail = head;
    for(i = 0; i < n-2; i++){
        tail = tail->next;
    }
    p = tail->next;
    count = tail->num;
    tail->num = p->num;
    p->num = count;
    tail = p->next;
    
    tail = head;
    while(tail!=NULL){
        printf("%d ", tail->num);
        tail = tail->next;
    }
}
全部评论

相关推荐

赛博小保安:不行你就找点东西继续干干直接等明年走社招吧,学历差的在秋招真的没戏。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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