основные вопросы о Linkedlist и Node Insertion - PullRequest
0 голосов
/ 12 ноября 2019

У меня есть некоторые проблемы с моей второстепенной лекцией.

Прежде всего, извините за плохой английский.

Во всяком случае, профессор сказал мне, что это очень восточный вопрос, просто поменяйтенесколько строк, и это будет работать.

но я не могу закончить этот код вовремя.

, когда я играю? отладки? мой код не может напечатать 'List'.

Как правильно напечатать о моем коде LinkedList? + Мне нужно исправить несколько строк. не весь код.

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


typedef struct ListNode {
    int data;
    struct ListNode* link;
}listNode;


void insertFirstListNode(listNode* num, int data) {
    listNode* newNode = malloc(sizeof(listNode));
    newNode->link = num->link;
    newNode->data = data;
    num->link = newNode;
}

typedef struct {
    listNode* head;
} linkedList_h;


linkedList_h* createLinkedList_h() {
    linkedList_h* Newlist = (linkedList_h*)malloc(sizeof(linkedList_h));
    Newlist->head = NULL;       
    return Newlist;
}



void printList(linkedList_h* L) {
    listNode* p;
    printf("L = (");
    p = L->head;
    while (p != NULL) {
        printf("%d", p->data);
        p = p->link;
        if (p != NULL) printf(", ");
    }
    printf(") \n");
}



void main() {
    linkedList_h* m;
    m = createLinkedList_h();
    insertFirstListNode(m, 10);
    printList(m);

}

1 Ответ

0 голосов
/ 12 ноября 2019

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

Пожалуйста, имейте обработку ошибок во всех функциях, таких как NULL-входы, сбой Malloc и т. Д. *

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


typedef struct ListNode {
    int data;
    struct ListNode* link;
}listNode;

typedef struct {
    listNode* head;
} linkedList_h;



void insertFirstListNode(linkedList_h* num, int data) {
    listNode* newNode = (listNode *)malloc(sizeof(listNode));
    newNode->link = num->head;
    newNode->data = data;
    num->head = newNode;
}


linkedList_h* createLinkedList_h() {
    linkedList_h* Newlist = (linkedList_h*)malloc(sizeof(linkedList_h));
    Newlist->head = NULL;       
    return Newlist;
}



void printList(linkedList_h* L) {
    listNode* p;
    printf("L = (");
    p = L->head;
    while (p != NULL) {
        printf("%d", p->data);
        p = p->link;
        if (p != NULL) printf(", ");
    }
    printf(") \n");
}



int main() {
    linkedList_h* m;
    m = createLinkedList_h();
    insertFirstListNode(m, 10);
    printList(m);
    return 0;

}
...