ZBLOG

#include #include struct nums { int num; struct listnode *next; }; struct nums* create(int num) { struct nums* node= malloc(sizeof(struct nums)); node->num = num; node->next = NULL; return node; } vo...

以下是修改后的代码,修复了一些错误和逻辑问题:

#include <stdio.h>
#include <stdlib.h>

struct nums
{
    int num;
    struct nums *next;
};

struct nums* createNode(int num)
{
    struct nums* node = malloc(sizeof(struct nums));
    node->num = num;
    node->next = NULL;
    return node;
}

void append(struct nums** head, int num) {
  struct nums* node = createNode(num);

    if (*head == NULL) 
    {  
        *head = node;
    } 
    else 
    {              
        struct nums* cur = *head;
        while (cur->next != NULL) {
            cur = cur->next;
        }
        cur->next = node;
    }
}

struct nums* add(struct nums* l1, struct nums* l2)
{
    struct nums newnum;  // 创建一个头节点
    struct nums* curr = &newnum; // 当前节点指针
    int index = 0;

    while (l1 != NULL || l2 != NULL || index != 0) 
    {
        int sum = index; 

        if (l1 != NULL) 
        {
            sum += l1->num; 
            l1 = l1->next;
        }

        if (l2 != NULL) 
        {
            sum += l2->num; 
            l2 = l2->next;
        }

        index = sum / 10;  
        
		curr->next= createNode(sum % 10);  
    	curr= curr -> next;  
	}

	return newnum.next;  
}

void print(struct nums* head) 
{
	struct nums* temp= head;

	while(temp!=NULL)
	{
		printf("%d ", temp->num);
		temp= temp->next;
	}
	printf("\n");
}

int main()
{
	struct nums *list1 = NULL;
	struct nums *list2 = NULL;

	int l1 = 0;
	int l2 = 0;

	printf("请输入链表l1表示的数字:");
	scanf("%d", &l1);

	while (l1 > 0)
	{
		append(&list1, l1 % 10);
		l1 /= 10;
	}

	printf("请输入链表l2表示的数字:");
	scanf("%d", &l2);

	while (l2 > 0)
	{
		append(&list2, l2 % 10);
		l2 /= 10;
	}

	struct nums* sum = add(list1, list2);

	printf("表示和的链表为:\n");
	print(sum);

	struct nums* temp;
	while (sum != NULL) 
    {
	   temp= sum->next;
       free(sum);
       sum= temp;    
    }

	return 0; 
}

修复了以下问题:

  • 创建节点时使用了错误的结构体指针类型
  • add 函数中创建新节点时,将其添加到结果链表中
  • main 函数中读取输入数字并构建链表
  • 添加了释放内存的部分代码


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=9152

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?