gpt4 book ai didi

c - 我的链接列表中的名称计数函数有什么问题?

转载 作者:行者123 更新时间:2023-11-30 14:49:08 24 4
gpt4 key购买 nike

这是较大代码的一部分,但我将包含我认为重要的内容。实际上我正在使用两种类型的链表。正如您将看到的,第一个结构体仅链接到列表的第一个节点。

这是第一个:

typedef struct mlist {
Node *headFirstName;
Node *headLastName;
} MultiLinkedList;

这是第二个:

typedef struct node {
char *first;
char *last;
long number;
struct node *nextFirst;
struct node *nextLast;
} Node;

以下是当前将姓名和号码添加到列表中的方式:

MultiLinkedList *add(MultiLinkedList *list, char *first, char *last, long num) {
// allocate a new node
Node *newNode = malloc ( sizeof(Node) );
newNode->first = malloc ( strlen(first) + 1 );
strcpy(newNode->first, first);
newNode->last = malloc ( strlen(last) + 1 );
strcpy(newNode->last, last);
newNode->number = num;
// add this new node at the head of the "byFirst" list
newNode->nextFirst = list->headFirstName;
list->headFirstName = newNode;
// add this new node at the head of the "byLast" list
newNode->nextLast = list->headLastName;
list->headLastName = newNode;
// return the multi-list object with updated head pointers
return list;
}

这是我目前尝试计算列表中的名称的方法:

int size(MultiLinkedList *list) {
int count = 0;
Node *newNode = malloc ( sizeof(Node) );
newNode->nextFirst = list->headFirstName;
newNode->nextLast = list->headLastName;
while (newNode->nextFirst!=NULL) {
count++;

}
// return the number of names in the list
return count;
}

如果有一个特定的名称来遍历这样的多个列表,那么有人可以直接指导我吗?

最佳答案

  • 您应该使用 size_t 作为尺寸
  • 你的malloc()没用
  • 如果您不执行诸如 x = x->next 之类的操作,您希望如何完成循环?
<小时/>
size_t size(MultiLinkedList *list) {
size_t count = 0;
for (Node *i = list->headFirstName; i; i = i->next) {
count++;
}
// return the number of names in the list
return count;
}

关于c - 我的链接列表中的名称计数函数有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49911645/

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