首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在列表中插入元素,每两个元素之间插入一个元素

在列表中插入元素,每两个元素之间插入一个元素
EN

Stack Overflow用户
提问于 2021-04-19 10:50:01
回答 1查看 44关注 0票数 1

我需要编写一个函数,将一个新节点插入到单个链接列表中,每两个现有节点之间插入一个新节点,其值等于这两个节点的值的差值。

例如,如果我们有列表1→2→5→7,结果应该是1→1→2→3→5→2→7,因为2-1=1,5-2=3和7-5=2。

以下是我的尝试:

代码语言:javascript
运行
复制
struct Node{
    int v;
    struct Node* next;
};
void insert(struct Node** headPtr){
    struct Node* curr = *headPtr;
    struct Node* new = malloc(sizeof(struct Node));
    while(curr->next!=NULL){
        new->v=curr->next->v-curr->v;
        new->next=curr->next;
        curr->next=new;
        curr=curr->next;
    }
}
void addRear(struct Node** headPtr, int v_new){
    struct Node* new = malloc(sizeof(struct Node));
    new->v=v_new;
    new->next=NULL;
    if(*headPtr==NULL){
        *headPtr=new;
    }else{
        struct Node* curr = *headPtr;
        while(curr->next!=NULL){
            curr=curr->next;
        }
        curr->next=new;
    }
}
void print(struct Node* head){
    struct Node* curr = head;
    while(curr!=NULL){
        printf("%d ",curr->v);
        curr = curr->next;
    }
}

但是当我在main中运行下面的代码时,我没有得到任何结果。以下是我的main代码:

代码语言:javascript
运行
复制
struct Node* head=NULL;
addRear(&head,1);
addRear(&head,2);
addRear(&head,5);
addRear(&head,7);
print(head);
printf("\n");
insert(&head);
print(head);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-19 13:57:39

两个问题:

  • 您只创建一个新节点。在loop.
  • curr=curr->next中移动新节点的创建是不正确的,因为这样curr就等于new节点。因此,在下一次迭代中,您将不会离列表的末尾更近。循环永远不会结束。相反,您应该做curr = new->next.

以下是修正后的代码:

代码语言:javascript
运行
复制
void insert(struct Node** headPtr){
    struct Node* curr = *headPtr;
    while (curr->next != NULL) {
        struct Node* new = malloc(sizeof(struct Node)); // <---
        new->v = curr->next->v - curr->v;
        new->next = curr->next;
        curr->next = new;
        curr = new->next; // <---
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67160583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档