当我尝试传递链表的头指针时,我不断收到错误消息

Posted

技术标签:

【中文标题】当我尝试传递链表的头指针时,我不断收到错误消息【英文标题】:I keep getting an error when I try to pass the head pointer of the linked list 【发布时间】:2021-02-21 14:42:15 【问题描述】:

我不断收到错误消息 undefined symbol insert(*Friend)。任何人都可以识别并解释错误吗?我知道它指的是它找不到它但我无法确定问题所在,请帮助。我正在开发一个使用链表保存朋友信息数据库的程序。因此,我试图在程序启动后将头节点初始化为null,并检查第一个插入是否此头是null,如果是这种情况,则将指针分配给新节点。

#include <iostream>

using namespace std;

// MARK: Friend Struct

struct Friend 

    string last;
    string first;
    int yob;
    int mob;
    int dob;
    string sex;
    struct Friend* next;
;

Friend* head = NULL;
void insert(struct Friend* head);
void getData();

// MARK: Main Method
int main(int argc, const char* argv[])

    insert(head);

    return 0;


// MARK: Get Data Method

void getData(string& f, string& l, string& s, int& y, int& m, int& d)


    cout << "Please type friend's first name: " << endl;
    cin >> f;
    cout << "Please type friend's last name: " << endl;
    cin >> l;
    cout << "Please type friend's year of birth (yyyy): " << endl;
    cin >> y;
    cout << "Please type friend's month of birth (mm): " << endl;
    cin >> m;
    cout << "Please type friend's day of birth (dd): " << endl;
    cin >> d;
    cout << "Please type friend's sex (f/m): " << endl;
    cin >> s;


// MARK: Insert new Friend Method

void insert(struct Friend** head)

    string f, l, s;
    int y = 0, m = 0, d = 0;
    getData(f, l, s, y, m, d);

    Friend* tmp = new Friend;
    tmp->first = f;
    tmp->last = l;
    tmp->yob = y;
    tmp->mob = m;
    tmp->dob = d;
    tmp->sex = s;
    tmp->next = NULL;

    if (*head == NULL) 
        *head = tmp;
    
;

【问题讨论】:

【参考方案1】:

你声明了void insert(struct Friend* head);(只有一颗星),但只定义了void insert(struct Friend** head)(有两颗星)。它们是不同的功能。

似乎应该将声明更正为两颗星(与定义匹配)并且在调用时应该传递&amp;head 而不是head

【讨论】:

【参考方案2】:

您将 (Friend*)head 传递给 insert(Friend **head),这是不正确的。 将呼叫更改为insert(&amp;head);

【讨论】:

以上是关于当我尝试传递链表的头指针时,我不断收到错误消息的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 Nuxt 中将数据从组件传递到页面时出现错误消息

尝试将共享按钮添加到 iPad 代码时,我不断收到错误消息

当我尝试输入 phpunit 时,我不断收到此错误

当我尝试从双向链表中删除最后一个元素时,为啥会收到“信号 SIGSEGV,分段错误”?

使用记录的 ghostscript 语法时,在 ghostscript 中不断收到错误消息

(Django)当我尝试将夹具文件加载到我的数据库中时,我不断收到字段冲突错误