gpt4 book ai didi

c - 如何从链接列表中获取数据部分进行比较?

转载 作者:行者123 更新时间:2023-11-30 16:40:23 24 4
gpt4 key购买 nike

我刚刚开始学习链表并正在摆弄它,但后来遇到了问题。我不确定如何访问数据成员来实际比较它。在我的代码中,我提示用户输入成绩,当他们输入 -1 时,就表示他们已完成。我的第一个想法是让指向节点的指针来获取数据,就像我在 scanf 中所做的那样,但是我无法将指针与整数进行比较。有没有办法从链表中获取数据成员进行比较?另外,指出其他错误也将不胜感激,因为我不太了解链表。我有以下代码:

int main() {
struct Node
{
int grade;
struct Node *next;
};

struct Node *head;
struct Node *first;
struct Node *temp = 0;
first = 0;

while (****** != -1) { //This is what I need the data from linked list for
head = (struct Node*)malloc(sizeof(struct Node));
printf("Enter the grade: \n ");
scanf("%d", &head -> grade);
if (first != 0) {
temp -> next = head;
temp = head;
}
else
{
first = temp = head;
}
}
}

最佳答案

您的代码存在一些问题:

1) 不要直接扫描到列表 - 使用临时变量

2)始终检查返回值

3)确保初始化变量,即 head

尝试如下:

struct Node
{
int grade;
struct Node *next;
};

int main() {

struct Node *head = NULL;
struct Node *temp;
int data;

while (1)
{
printf("Enter the grade: \n ");
if (scanf("%d", &data) != 1)
{
// Illegal input
exit(1);
}
if (data == -1) break; // Stop the loop

temp = malloc(sizeof *temp); // Allocate new element
if (temp == NULL)
{
// Out of mem
exit(1);
}
temp -> next = head; // Insert new element in the front of list
temp -> grade = data;
head = temp; // Move the front (aka head) to the new element
}

// .... add code that uses the list

return 0;
}

关于c - 如何从链接列表中获取数据部分进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46659133/

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