C语言 添加到链表



我有一个.c和一个.h文件。所有链表方法都由我的教授提供。我想通过创建一个main函数并尝试添加到链表然后显示链表来测试链表。如何在main函数中执行此操作?这是我所拥有的:

int main() {
    linkedList* test = createLinkedList();
    addToLinkedList(test, value);
    displayLinkedList(test);
}

我也尝试了这段代码:

int main() {
    linkedList* hello = createLinkedList();
    struct tnode* test = "hello";
    addToLinkedList(hello, test);
    return (0);
}

但是,我所拥有的不起作用。

这是教授给我们的代码:

TESTlinkedlist.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "TESTlinkedList.h"
/* Creates a linked list */
linkedList* createLinkedList() {
    return NULL;
}
/* Displays the linked list */
void displayLinkedList(linkedList* ll) {
    linkedList* p = ll;
    printf("[");
    while (p != NULL) {
        printf(" % d " , p -> node -> c);
        p = p -> next;
    }
    printf("]n");
}
/* Adds a tree node to the linked list */
void addToLinkedList(linkedList** ll, tnode* val) {
    linkedList* nn = (linkedList*)malloc(sizeof(linkedList));
    nn -> node = val;
    nn -> next = NULL;
    linkedList* p = *ll;
    if (p == NULL) {
        p = nn;
    } else {
        while (p -> next != NULL) {
            p = p -> next;
        }
        p -> next = nn;
    }
}

TESTlinkedlist.h

/* Include Guards to prevent double inclusion with include directive */
#ifndef TESTLINKEDLIST_H
#define TESTLINKEDLIST_H
/* Typedef Structures */
typedef struct tnode {
    double weight;
    int c;
    struct tNode* right;
    struct tNode* left;
    struct tNode* parent;
} tnode;
typedef struct ll {
    tnode* node;
    struct ll* next;
} linkedList;
/* Methods */
linkedList* createLinkedList();
void displayLinkedList(linkedList* ll);
void addToLinkedList(linkedList** ll, tnode* val);
void addInOrder(linkedList **ll, tnode* nn);
#endif /* LINKEDLIST_H */

任何线索如何创建一个新的链表,创建一个t节点并将其添加到该链表中,然后显示它,给定我的教授放下的方法?

例如

,教授给你的代码被破坏了,struct tnode* test = "hello";编译过程中导致错误。

把它拿回给他,让他失望。当你在那里时,告诉他return不是一个功能,他不应该投malloc

在另一个与教授malloc相关的说明中,他应该检查返回值。例如:

linkedList* nn = malloc(sizeof *nn);
if (!nn) {
    return;
}
nn -> node = val;
nn -> next = NULL;

还有另一个错误,你们可能都错了;有两个main入口点,你的编译器可能会在它们之间混淆。删除其中一个。

在这两个入口点中,addToLinkedList被错误地使用;第一个参数旨在成为linkedList **,因为给出的是linkedList *。也许(在你的第一个main入口点)你的意思是写addToLinkedList(&test, value);.请注意附加的与号。

函数addToLinkedList和displayLinkedList需要获取指向指针的指针作为其第一个参数。所以,主要应该看起来像这样:

int main() {
    linkedList* test = createLinkedList();
    addToLinkedList(&test, value);
    displayLinkedList(&test);
}

希望这有帮助。

相关内容

  • 没有找到相关文章