c-访问链表中的结构



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

char courseName[100];
printf("Enter name of course to removen");
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

课程的头文件

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;

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

其次,如何访问结构课程中的BST?例如,在"数学"课程中插入学生ID。我只习惯于在节点的数据部分处理int和chars。请尽量不要把代码墙扔给我,我宁愿学习,也不必再问了。感谢您抽出时间

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

2) 您可以像(currentCourse.students)->student_id=xyz 一样简单地访问student_id

还要注意,在删除节点时,不要忘记释放Course.name, Course.students指向的内存,否则可能会造成内存泄漏。

最新更新