【问题标题】:Having trouble creating linked list创建链表时遇到问题
【发布时间】:2013-02-18 04:01:28
【问题描述】:

我有一个字符串数组,我应该用它来创建一个链表。问题是我只能使用数组。我查找的所有内容都说使用结构和节点,我不确定从这里去哪里。我知道我的代码不正确,每个指针都指向数组的一个元素,因此它们并没有真正链接。如果有人能指出我正确的方向,那就太棒了

这是我目前所拥有的

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

}

【问题讨论】:

  • 关于链表的问题太多了……你有没有看过一些指导?
  • names 有 5 个元素,但您只用 4 个元素初始化 :)
  • @MartinshShaiters 是吗?
  • @jogojapan 这是一年中的那个时候,一年级的 CS 学生在数据结构中完成作业。 :D
  • @blizz 所以有 5 个初始化器。还是什么?

标签: c++ arrays string linked-list


【解决方案1】:

这里有一个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/

【讨论】:

  • 感谢您的链接,但我不允许使用结构。我只被允许使用数组。我知道如何使用结构创建链表,但仅限于数组我有点卡住了
  • 你确定你不能使用数组,没有链表没有任何意义。
【解决方案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;
}

【讨论】:

    【解决方案3】:

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

    您查找了一些告诉您使用结构的东西 - 您是否尝试过这样做?它不在您的代码中。

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

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

    【讨论】:

    • 指令说我只能使用数组。如果我可以使用结构,我现在已经完成了。关于尝试用 5 个项目初始化数组,我尝试了一些不起作用的方法,并且忘记了将最后一部分与其余被丢弃的代码一起删除。
    猜你喜欢
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多