我有.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节点并将其添加到该链表,然后显示它,给出我教授放下的方法?
答案 0 :(得分:1)
您教授给您的代码已损坏,例如struct tnode* test = "hello";
在编译期间导致错误。
把它带回给他并让他失望。当你在那里时,告诉他return
不是一个功能而是he shouldn't cast malloc
。
在另一位教授 - malloc
- 相关注释中,他应该检查返回值。例如:
linkedList* nn = malloc(sizeof *nn);
if (!nn) {
return;
}
nn -> node = val;
nn -> next = NULL;
还有另一个错误,你可能都有错;有两个main
入口点,您的编译器可能会在它们之间混淆。删除其中一个。
在这两个入口点中,addToLinkedList
使用不正确;第一个参数旨在成为linkedList **
,其中给出的是linkedList *
。也许(在你的第一个main
入口点)你打算写addToLinkedList(&test, value);
。请注意额外的&符号。
答案 1 :(得分:0)
函数addToLinkedList和displayLinkedList需要获取指向指针的指针作为其第一个参数。 所以,主要应该是这样的:
int main() {
linkedList* test = createLinkedList();
addToLinkedList(&test, value);
displayLinkedList(&test);
}
希望这有帮助。