我有一个.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);
}
希望这有帮助。