无法创建链表

时间:2013-02-18 04:01:28

标签: c++ arrays string linked-list

我有一个字符串数组,我应该创建一个链表。问题是我只能使用数组。我所看到的一切都说使用结构和节点,我不知道从哪里开始。我知道我的代码不正确,我的指针指向每个数组的一个元素,所以它们并没有真正链接。如果有人能指出我正确的方向,这将是惊人的

这是我到目前为止所拥有的

#include <iostream>
#include <string>

using namespace std;


int main ()
{
string names [4] = {"Dick", "Harry", "Sam", "Tom", " "};
string *nameptr[4];

for(int x = 0; x < 4; x++)
{
    nameptr[x] = &names[x];
    cout << *nameptr[x] << " is at position " << x << " and points to ";
    cout << &nameptr[x] << endl;
}
return 0;

}

3 个答案:

答案 0 :(得分:2)

以下是c ++中链接列表的教程:

http://www.dreamincode.net/forums/topic/31357-c-linked-lists-custom-linked-lists-part-1/

您应该先搜索并先行,然后当您问这里的人时,您可以更好地帮助您解决问题。事实上,请阅读此内容:

http://mattgemmell.com/2008/12/08/what-have-you-tried/

答案 1 :(得分:2)

实际上如果使用数组,你只需要一个指向第一个元素的指针,你可以通过指针算法访问数组的其余部分。

但是,如果你想要一个真实的链接列表。然后你可以做这样的事情:

struct mydata{
    std::string data;
    struct mydata* next;
}

mydata names[4] = {{"Dick",NULL}, {"Harry",NULL}, {"Sam",NULL}, {"Tom",NULL}, {" ",NULL}};
//here you establish the link
names[0].next = &names[1];
names[1].next = &names[2];
names[2].next = &names[3];
names[3].next = &names[4];
//here is the pointer to the head;
mydata* nameptr = names;

while(nameptr)
{
    cout << nameptr->data;
    nameptr = nameptr->next;
}

答案 2 :(得分:0)

“我只能使用数组”是什么意思?您只知道如何使用数组,或者仅限于使用数组,或者??

你已经找到了一些告诉你使用结构的东西 - 你试过这样做吗?它不在你的代码中。

与您的实际问题无关,但您已声明了一个包含4个字符串(string names [4])的数组,那么您尝试使用5个项目初始化该数组。

我的建议与您所看到的相似:使用结构,我将补充说您也需要使用堆(malloc in c,new in C ++)。该结构将需要一个指向下一个列表元素的链接指针,并在某处存储数据本身,在这种情况下可能只是一个char指针。