我在C ++中实现自己的linked_list时遇到了段错误。我花了几个小时,但仍然找不到错误。任何帮助将不胜感激。先感谢您。

我认为错误是在find_kth1()函数中,但我不知道我做错了什么。我可以按预期打印链接列表。

/*
 *
 * find kth to last element in a singly linked list
 */

#include <iostream>
// #include "../linked_list.h"
using namespace std;

struct Node {
    int data ;
    struct Node *next;
};

Node* push(Node *head, int d){
    // push to top
    Node *n = new Node;
    n->data = d;
    n->next = head;
    return n;
}


void print_LL( Node* head){
    Node* p = head;
    while(p) {
        cout << p->data << ' ';
        p = p->next;
    }
}

int find_length( Node* head) {
    int len = 0;
    Node* p = head;
    while(p){
        len ++;
        p = p->next;
    }
    return len;
}

Node* find_kth1( Node* head, int k){
    // find length, scan twice
    int len  = find_length(head);

    Node *p = head;
    int i = 0;
    while( i < len-k){
        i ++ ;
        p = p->next;
    }
    return p;
}



int main( void){
    Node *head;
    head = push( head, 2) ;
    head = push( head, 3) ;
    head = push( head, 4) ;
    head = push( head, 5) ;
    head = push( head, 2) ;

    print_LL( head);


    int k = 3;

    Node *p = find_kth1( head, k);

    // cout<<p->data<<endl;
}

最佳答案

头指针需要初始化

与未初始化一起使用

通常,编译器会发出警告,因此请务必注意警告

Node *head=NULL;

关于c++ - C++链表segfault调试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25839307/

10-10 22:50