创建链接列表时出现问题



我有一个字符串数组,应该用它创建一个链表。问题是我只能使用数组。我查到的所有内容都说要使用结构和节点,我不确定从这里开始该怎么做。我知道我的代码不对,我的指针每个都指向数组的一个元素,所以它们并没有真正链接。如果有人能给我指明正确的方向,那将是令人惊叹的

这是我迄今为止拥有的

#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;
}

以下是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/

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

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

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;
}

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

你查了一些告诉你要使用structs的东西——你试过这样做吗?它不在您的代码中。

与您的实际问题无关,但您已经声明了一个由4个字符串组成的数组(string names [4]),然后您正试图用5个项初始化该数组。

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

相关内容

  • 没有找到相关文章

最新更新