Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 创建链接列表时遇到问题_C++_Arrays_String_Linked List - Fatal编程技术网

C++ 创建链接列表时遇到问题

C++ 创建链接列表时遇到问题,c++,arrays,string,linked-list,C++,Arrays,String,Linked List,我有一个字符串数组,我应该用它创建一个链表。问题是我只能使用数组。我查到的所有东西都说要使用struct和nodes,但我不知道从这里可以走到哪里。我知道我的代码不对,我的指针指向数组中的一个元素,所以它们没有真正的链接。如果有人能给我指出正确的方向那就太棒了 这是我到目前为止所拥有的 #include <iostream> #include <string> using namespace std; int main () { string names [4] =

我有一个字符串数组,我应该用它创建一个链表。问题是我只能使用数组。我查到的所有东西都说要使用struct和nodes,但我不知道从这里可以走到哪里。我知道我的代码不对,我的指针指向数组中的一个元素,所以它们没有真正的链接。如果有人能给我指出正确的方向那就太棒了

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

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

}
#包括
#包括
使用名称空间std;
int main()
{
字符串名称[4]={“迪克”、“哈里”、“萨姆”、“汤姆”、“汤姆”、“”};
字符串*nameptr[4];
对于(int x=0;x<4;x++)
{
nameptr[x]=&names[x];

cout这是一个关于c++中链表的教程:

你应该先搜索并尝试一下,然后当你问这里的人时,他们会更好地帮助你解决问题。事实上,也请阅读以下内容:

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

您已经查找了一些告诉您使用结构的内容-您尝试过这样做吗?这里的代码中没有

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


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

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

但是,如果您想要一个真正的链接列表,则可以执行以下操作:

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;
}
struct mydata{
std::字符串数据;
结构mydata*下一步;
}
mydata名称[4]={{“Dick”,NULL},{“Harry”,NULL},{“Sam”,NULL},{“Tom”,NULL},{”,“NULL};
//在这里你可以建立链接
名称[0]。下一步=&名称[1];
名称[1]。下一步=&名称[2];
名称[2]。下一步=&名称[3];
名称[3]。下一步=&名称[4];
//这是指向头部的指针;
mydata*nameptr=名称;
while(nameptr)
{
cout数据;
nameptr=nameptr->next;
}

关于链表的问题太多了……你看了一些有指导意义的吗?名称有5个元素,但你只初始化了4个:)@MartinshShaiters yeah?@jogojapan每年的这个时候,CS一年级的学生都会得到数据结构方面的作业:D@blizz所以有5个初始值设定项。或者什么?说明书上说I ca只使用数组。如果我可以使用结构,我现在就可以这样做了。关于尝试用5项初始化数组,我尝试了一些不起作用的东西,但忘了删除最后一部分和其余被丢弃的代码。感谢链接,但我不被允许使用结构。我只被允许使用数组。我知道如何创建链接使用结构编辑列表,但仅限于数组我有点笨你确定不能使用数组吗,没有结构的链表真的没有任何意义。