gpt4 book ai didi

c - 访问链表中的结构

转载 作者:行者123 更新时间:2023-11-30 15:09:40 25 4
gpt4 key购买 nike

我无法理解包含名称和 BST 的结构链接列表的工作原理。我缺乏理解的一个例子是我如何尝试编写一个函数来从列表中删除一个节点;我不知道如何将用户输入连接到我想要删除的特定节点:

char courseName[100];
printf("Enter name of course to remove\n");
scanf("%s", &courseName);
Course *deleteCourse = courseName; //definitely wrong, assuming something here to connect the input to the struct node goes here
delete_from_list(&listcourses, Whatgoeshere); //I already have code for delete function
//set bst of course to null

类(class)头文件

typedef struct course{ 
char *name;
BST students;
} Course;

typedef struct courseNode {
Course data;
struct courseNode *next;
} *CourseList;

BST 的头文件

typedef struct bstNode { 
long student_id;
struct bstNode *left;
struct bstNode *right;
} *BST;

我已经设置了标准插入和删除功能。

其次,如何访问结构体类(class)中的 BST?例如,将学生 ID 插入类(class)“数学”中。 我只习惯处理节点数据部分中的整数和字符。请尽量不要只是向我扔代码墙,我宁愿学习而不必再次询问。谢谢您的宝贵时间

最佳答案

1) 要根据类(class)名称删除特定节点,您不需要创建新的 Course 类型对象(只是浪费内存),您可以在删除节点函数中再编写一个包装器,其中它将迭代每个节点并将用户字符串 courseNamecurrentCourseNode->data.name 进行比较。

2) 您可以像(currentCourse.students)->student_id=xyz

一样简单地访问student_id

另请注意,删除节点时不要忘记释放 Course.name、Course.students 指向的内存,否则可能会导致内存泄漏。

关于c - 访问链表中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36540468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com