我有一个字符串数组,我应该创建一个链表。问题是我只能使用数组。我所看到的一切都说使用结构和节点,我不知道从哪里开始。我知道我的代码不正确,我的指针指向每个数组的一个元素,所以它们并没有真正链接。如果有人能指出我正确的方向,这将是惊人的
这是我到目前为止所拥有的
#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;
}
答案 0 :(得分:2)
以下是c ++中链接列表的教程:
http://www.dreamincode.net/forums/topic/31357-c-linked-lists-custom-linked-lists-part-1/
您应该先搜索并先行,然后当您问这里的人时,您可以更好地帮助您解决问题。事实上,请阅读此内容:
答案 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
指针。