gpt4 book ai didi

C++链表插入函数

转载 作者:太空宇宙 更新时间:2023-11-04 12:22:44 24 4
gpt4 key购买 nike

我在插入函数中使用的创建函数出现编译错误。虽然当我在 if 子句中执行不同的调用时它可以工作,但我想将它移动到一个单独的创建函数。感谢任何有关我得到的编译错误的帮助

|76|错误:无法将 list_link*' 转换为 sorted_list::list_link*' in assignment|

头文件

class sorted_list
{
public:
sorted_list(); // Constructor declaration
~sorted_list(); // Destructor declaration

void insert(int key, double value);
void print();


private:
class list_link
{
// Declarations
public:
my_key_type key;
my_value_type value;
list_link *next;
};
list_link* first;

};

函数

void sorted_list::insert(int key, double value)
{
list_link *curr, *prev;

curr = first;

while(curr)
{
prev = curr;
curr = curr->next;
}
if(first == 0 || prev == 0) //if empty or add first
{
cout << "empty list" << endl;
list_link *new_link = new list_link;
new_link->key = key;
new_link->value = value;
new_link->next = 0;
first = new_link;

}
else
{
cout << "add" << endl;
prev->next = create(key, value, 0);
}
}

创建函数

list_link* create(my_key_type key, my_value_type value, list_link* next)
{
// creates the node;
list_link *new_link = new list_link;

// add values to the node;
new_link->key = key;
new_link->value = value;
new_link->next = next;

return new_link;
}

最佳答案

list_link 类是:

  1. 声明在sorted_list的范围内
  2. 标记为私有(private)

为了让独立函数创建这种类型的对象,您需要将该类型公开,您还需要在它前面加上sorted_list::前缀,否则您将需要在 sorted_list 类之外声明它。我应该补充一点,您将 list_link 用作简单的数据对象,其中没有方法并且字段是公共(public)的,因此——从纯粹的风格角度来看——我建议将其声明为 struct 而不是类,这也消除了对 public 的需要。

关于C++链表插入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4083428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com