gpt4 book ai didi

c - 链表打印

转载 作者:太空宇宙 更新时间:2023-11-04 04:54:42 24 4
gpt4 key购买 nike

我正在建立这个链接(上面的代码),我需要当信息(国家)与以前的信息相同时,链接列表只更新计数并且不存储信息示例

如果有这个输入

mmm 1
mmm 2
mmm 3

输出需要是mmm3

我该怎么做才能做到这一点

void insertitem(ListNode **startPtr,booking_type* bookings){
int ans=0;

ListNode *prevNode =NULL ,*curNode=*startPtr;

ListNode *newNode = (ListNode*)malloc(sizeof(ListNode));

strcpy(newNode->data, bookings->country); //newNode->data =bookings->country;
newNode->nextPtr = NULL;
newNode->count = 1;
while ((curNode!=NULL)&&(strcmp(curNode->data,bookings->country)<=0) ) // future : use strcmp
{
if(strcmp(curNode->data,bookings->country)==0){
newNode->count++;
}

prevNode=curNode;
curNode = prevNode->nextPtr;
}

if(prevNode == NULL)
*startPtr=newNode;
else
prevNode->nextPtr = newNode;

newNode->nextPtr = curNode;
}

最佳答案

当您看到有一个具有相同国家/地区的 LL 节点时,您当前正在增加新节点的计数:

if(strcmp(curNode->data,bookings->country)==0){
newNode->count++;
}

相反,您可以做的是增加现有节点的数量。同样在这种情况下,您不会插入新节点,因此您需要释放分配的节点并从函数返回:

if(strcmp(curNode->data,bookings->country)==0){
curNode->count++;
free newNode;
return;
}

关于c - 链表打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10331659/

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