C ++创建链表的链表

时间:2013-05-11 20:11:10

标签: c++ linked-list

所以,这是我的“linked_list.h”标题的一部分:

template <typename T>
class Linked_list {
public:
  Linked_list();
  ~Linked_list();

  void add_first(const T& x);
  //...
};

我的实施的一部分:

template <typename T>
line 22: void Linked_list<T> :: add_first(const T& x)
{
  Node<T>* aux;
  aux = new Node<T>;
  aux->info = x;
  aux->prev = nil;
  aux->next = nil->next;
  nil->next->prev = aux;
  nil->next = aux;
}

我正在尝试创建字符串链接列表的链接列表,并在链接列表的一个链接列表中添加字符串,如下所示:

Linked_list<Linked_list<string> > *l;
l[0]->add_first("list");
//also I've tried l[0].add_first("list"); but it didn't work either

谢谢。

稍后编辑: 当我尝试l [0] - &gt; add_first(“list”)时,这些是错误:

main.cc: In function ‘int main()’:
main.cc:22:22: error: no matching function for call      to‘Linked_list<Linked_list<std::basic_string<char> > >::add_first(const char [4])’
main.cc:22:22: note: candidate is:
In file included from main.cc:6:0:
linked_list.cc:28:6: note: void Linked_list<T>::add_first(const T&) [with T = Linked_list<std::basic_string<char> >]
linked_list.cc:28:6: note:   no known conversion for argument 1 from ‘const char [4]’ to ‘const Linked_list<std::basic_string<char> >&’

稍后编辑: 它终于工作了,谢谢你的想法: 我这样做了,现在没关系:

Linked_list<Linked_list<string> > l;
l[0].add_first("list");

它有效:D。再次感谢!

Neah ..实际上它不起作用..

2 个答案:

答案 0 :(得分:0)

您已创建指向链接列表的指针,并且从未将其指向现有元素。使用new来分配动态内存或使用对象而不是指针。

像这样:

Linked_list<Linked_list<string> > *l = new Linked_list<Linked_list<string> >();

或者像这样:

Linked_list<Linked_list<string> > l;

您使用operator[]的事实可能意味着您打算使用数组,所以可能您必须使用第一个版本。

答案 1 :(得分:0)

您正在尝试访问未初始化的指针。使用

Linked_list<Linked_list<string> > lol;
Linked_list<string> los;
los.add_first("list");
lol.add_first(los);

Linked_list<Linked_list<string> > *p = new Linked_list<Linked_list<string> >;