gpt4 book ai didi

c++ - 我如何使用这个链接列表实现?

转载 作者:行者123 更新时间:2023-11-27 23:13:35 25 4
gpt4 key购买 nike

我正在向 Goodrich 学习 C++ 的数据结构和算法。他们已经给出了这个 LinkedList 实现。我理解代码,但我不理解,但我无法在主类中使用它。如何构造实例并进行插入、删除?例如,我尝试按如下方式创建该类的实例:

StringLinkedList() L;

但它显示错误:预期为“;”在'L之前

#include <iostream>
#include <string>

using namespace std;

class StringNode {
private:
string elem;
StringNode* next;

friend class StringLinkedList;
};

class StringLinkedList{
public:
StringLinkedList();
~StringLinkedList();
bool empty() const;
const string& front() const;
void addFront(const string& e);
void removeFront();
private:
StringNode* head;
};

StringLinkedList::StringLinkedList()
:head(NULL) {}
StringLinkedList::~StringLinkedList()
{while (!empty()) removeFront();}
bool StringLinkedList::empty() const
{return head==NULL;}
const string& StringLinkedList::front() const
{return head->elem;}
void StringLinkedList::addFront(const string& e){
StringNode* v = new StringNode;
v->elem=e;
v->next = head;
head=v;
}
void StringLinkedList::removeFront(){
StringNode* old=head;
head = old->next;
delete old;
}


int main () {
}

最佳答案

括号 () 表示函数调用。如果你想声明一个变量,语法是

Typename variable_name;

可选地,您可能需要将参数传递给构造函数

Typename variable_name(param);

在 C++11 中,统一的初始化语法允许您使用 {} 但我离题了。无论哪种方式,它们都在变量名之后。在您的情况下,这有效:

StringLinkedList L;


当你说

StringLinkedList() L;

编译器看到一个类型名,然后期望一个变量名,但在名称 L 之前得到 ()(顺便说一句 - 它可能需要一个更长的名称)所以决定你必须进行函数调用,该函数调用应以分号结尾。但它没有,它以 L; 结尾,所以你得到

expected ";" before 'L

关于c++ - 我如何使用这个链接列表实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18330783/

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