создание копии единого связанного списка понравившихся - PullRequest
0 голосов
/ 18 июня 2020

Итак, что я пытаюсь сделать, так это скопировать связанный список, который я создал, и для этого я знаю, что мне нужно пересечь список.

Проблема в том, что если я сделаю первую копию, она работает, но если я сделаю копию копии или другой копии, это даст ошибку сегментации, и я не понимаю, почему.

Программа:

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

typedef struct Node { 
    int v; 
    struct Node* next; 
}link;

link* insert(link* head,int data)
{
    link* x;
    if (head == NULL)
    {
        link *new = (link*) malloc(sizeof(struct Node));
        new->v = data;
        new->next = NULL;
        return new;
    }
    for(x = head; x->next != NULL; x = x->next);
        link *new = (link*) malloc(sizeof(struct Node));
        new->v = data;
        new->next = NULL;
        x->next = new;
        return head;
}

void print_lst(link* head)
{
    link* t;
    for (t = head; t != NULL; t = t->next)
        printf("* %d\n",t->v);
}

link* copy_lst(const link* head)
{
    const link* x;
    link *copy; 
    if (head == NULL)
    {
        return NULL;
    }
    for(x = head; x->next != NULL; x = x->next)
    {
        copy->v = x->v;
        copy->next = x->next;
    }
    return copy;
}

int main()
{
    link *head = NULL;
    head = insert(head,5);
    head = insert(head,6);
    link *head2 = NULL;
    head2 = copy_lst(head);
    print_lst(head2);
    link *head3 = copy_lst(head2);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...