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

牛牛的链表交换

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

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

typedef struct node {
    int num;
    struct node* next;
} Node ;

Node* createnode(int num) {
    Node* ptr = (Node*)malloc(sizeof(Node));
    if (ptr == NULL) {
        printf("malloc error!\n");
        exit(0);
    }
    ptr->num = num;
    ptr->next = NULL;
    return ptr;
}

void add_node(Node* head,int num)
{
    Node* q=(Node*)malloc(sizeof(Node));
    q->num=num;
    q->next=NULL;
    Node *p=head;
    while(p->next!=NULL)
    {
        p=p->next;
    }
    p->next=q;
}

void swap_node(Node* head, int n) {
    Node* p = head;
    while (n--)
        p = p->next;
    int num1 = p->num, num2 = p->next->num;
    p->num = num2;
    p->next->num = num1;
}

void Printlist(Node* head) {
    Node* p = head;
    while (p) {
        printf("%d ", p->num);
        p = p->next;
    }
}

int main() {
    int n;
    scanf("%d", &n);
    int* a = (int*)malloc(n * sizeof(int));
    if (a == NULL) {
        printf("malloc error!\n");
        exit(0);
    }
    for (int i = 0; i < n; i++)
        scanf("%d", &a[i]);
    Node* head=createnode(a[0]);
    for (int i = 1; i < n; i++)
        add_node(head, a[i]);
    swap_node(head, 0);
    swap_node(head, n - 2);
    Printlist(head);
    Node* temp;
    while (head != NULL) {
        temp = head;
        head = head->next;
        free(temp);
    }

    free(a);
    return 0;
}

全部评论

相关推荐

01-14 12:08
门头沟学院 Java
神哥了不得:(非引流)1.既然发出来了简历,就稍微提一点点小建议,确实简历很不错了,练手项目可以换一些质量高的,工作内容,可以加上一些量化指标,比如第一条系统响应速度由多少变成多少,减少了百分之多少,第4条就很不错。2.广投,年前实习招募比较少了
点赞 评论 收藏
分享
02-13 14:30
四川大学 Java
Java抽象带篮子:简历怎么写可以看看我发的帖子,你先照着优化下简历吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务