题解 | 牛牛的链表添加节点

牛牛的链表添加节点

https://www.nowcoder.com/practice/e33b79c2e15a41f9b541e73cd256124a

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

// write your code here......
//创建结构体
typedef struct Node
{
    int data;
    struct Node* next;
}Node;

//将数组转化为链表
Node* createList(int* arr,int n)
{
    Node* head = NULL;
    Node* tail = NULL;
    if(n==0)
    {
        return NULL;
    } 
    for(int i=0;i<n;i++)
    {
        Node* newnode =(Node*)malloc(sizeof(Node));
        newnode->data =arr[i];
        newnode->next =NULL;
        if(head==NULL)
        {
            head = newnode;
            tail = newnode;
        } else 
        {
            tail->next=newnode;
            tail=newnode;
        }
        
    }
    return head;
}
//打印最终链表
void printlist(Node* head)
{
   Node* current = head;
   if(current==NULL)
   {
    printf("list is empty");
   }
    while(current!=NULL)
    { 
        printf("%d",current->data);
        if(current->next !=NULL)
        {
            printf(" ");
        }
        current = current->next;
    }
    printf("\n");
}
//shifangleicui
void freeList(Node* head)
{
    Node* current = head;
    Node* temp;
    while(current!= NULL)
    {
        temp = current;
        current = current->next;
        free(temp);
    }
}



int main() {

    int n,idx;
    scanf("%d%d",&n,&idx);

    int* arr=(int*)malloc(n*sizeof(int));

    for (int i = 0; i < n; i++) {
        scanf("%d",&arr[i]);
    }

    // write your code here......
    Node* head = createList(arr,n);
    Node* current = head;
    for(int j=1;j<idx;j++)
    {   
        current = current->next;        
    }
//create newnode
Node* newnode = (Node*)malloc(sizeof(Node));
newnode->data = idx;//newnode value is i
newnode ->next = current->next;//newnode point out next point
current->next = newnode;
printlist(head);

free(arr);
freeList(head);
return 0;
}

1.通过循环找到了第 i 个节点的位置 2.创建新节点并插入 3. 打印最终结果

创建新节点插入:Node* newnode = (Node*)malloc(sizeof(Node)); Node* current = head; newnode->data = idx ; newnode->next =current->next ; current->next = newnode;

#刷题#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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