添加到单个链表的末尾分段故障C

古纳·克里斯蒂安(Cuna Christian)

我正在尝试制作一个在单个链表的末尾添加元素的ac应用程序,但是在读取最后一个元素后出现了分段错误。

我使用函数addAtEndSLL()在最后添加一个元素。

//Program to add elements at the end of a single linked list
#include <stdio.h>
#include <stdlib.h>

//Basic declaration of a SLL
struct singleList{
    int data;
    struct singleList *next;
};

//Add an element at the end of a SLL
int addAtEndSLL(struct singleList **startPtr, int value){
    struct singleList *newNode;
    newNode = (struct singleList *)malloc(sizeof(struct singleList));
    if(newNode == NULL){
        printf("\nFailed to Allocate Memory");
        return;
    }

    newNode->data = value;
    newNode->next = NULL;
    if(*startPtr == NULL){
        *startPtr = newNode;
    } else {
        struct singleList *temp = NULL;
        temp = *startPtr;
        while(temp->next != NULL){
            temp = temp->next;
        }
        temp->next = newNode;
    }
}

int main() {
    int i, value;
    struct singleList *first = NULL, *tempS = NULL;
    tempS = first;
    for(i = 1; i <= 5; i++){
        printf("\nEnter the data:");
        scanf("%d", &value);
        addAtEndSLL(&first, value);
    }

    /*****This is where I belive the segfault occurs*****/

    while(tempS->next != NULL){
        printf("%d", tempS->data);
        tempS = tempS->next;
    }
    return 0;
}

任何帮助将非常感激。

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

首先,解决警告:void代替功能int,并删除last return,现在不再需要。

接下来,是代码中的真正问题:在函数start内部进行设置时,由于C按值传递参数addAtEndSLL,因此值first保持不变。包括指针。

要解决此问题,请将函数更改为接受指向指针的指针(即双星号),&first而不是传递first给它,然后对里面的参数添加额外级别的取消引用addAtEndSLL

void addAtEndSLL(struct singleList **startPtr, int value) {
    ...
    // Change all uses of start with *startPtr, like this:
    if(*startPtr == NULL){
        *startPtr = newNode;
    }
    ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将节点添加到链表的末尾

来自分类Dev

将节点添加到链表的末尾

来自分类Dev

C分段故障链表

来自分类Dev

将节点添加到链表时出现分段错误

来自分类Dev

将项目添加到链表段错误的末尾

来自分类Dev

C中的链表,大数加法。分段故障

来自分类Dev

分段故障链表

来自分类Dev

链表实现分段故障

来自分类Dev

在实现链表时可变借入错误,其中在Rust中将新元素添加到末尾

来自分类Dev

C:使用链表将数据添加到结构

来自分类Dev

C ++分段故障链接列表元素添加

来自分类Dev

C ++分段故障链接列表元素添加

来自分类Dev

添加到背面的链表

来自分类Dev

使用函数添加到链表

来自分类Dev

如何使用xslt将单个元素添加到xml的末尾?

来自分类Dev

添加到单个数组元素-C ++

来自分类Dev

将对象添加到数组末尾

来自分类Dev

将元素添加到数组的末尾

来自分类Dev

SwiftyJson添加到对象/数组的末尾

来自分类Dev

将对象添加到数组的末尾

来自分类Dev

将项目添加到队列末尾

来自分类Dev

将列添加到文件末尾

来自分类Dev

将总计添加到每行的末尾

来自分类Dev

将节点添加到链表的功能不起作用 C

来自分类Dev

将元素添加到已排序的链表C ++中时出现的问题

来自分类Dev

将节点添加到C中的链表时,EXC_BAD访问

来自分类Dev

C ++:按字母顺序将节点添加到双向链表

来自分类Dev

分段故障11链表节点结构

来自分类Dev

链表功能导致分段故障