我对结构有疑问.C ++不是我正在学习的语言,但我需要做运动..
我有这样的结构:
struct List
{
int data;
List* next;
};
我得到了类和方法,我可以添加/删除/打印出结构元素,例如查看我得到的元素方法:
void Kopa::Print()
{
List *tmp = p;
while (tmp != NULL)
{
cout << tmp->data << endl;
tmp = tmp->next;
}
tmp.struktura;
}
问题是,如何在列表结构中添加和访问新结构? 我猜它结构看起来像这样,但我不明白如何用类方法访问它..
struct List
{
int data;
List* next;
struct NewList
{
int data;
NewList* next;
};
};
答案 0 :(得分:0)
首先,您必须声明该结构的成员,就像您声明其他成员变量一样:
struct List
{
struct NewList
{
int data;
};
NewList my_new_list; // Declare a member
};
然后你像任何其他成员一样使用它,只需根据需要嵌套成员访问:
List l;
l.my_new_list.data = ...;
如果您的意思是如何访问NewList
内的List
结构以声明局部变量,那么您必须使用范围运算符::
:
List::NewList new_list;
new_list.data = ...;
答案 1 :(得分:0)
这看起来像是链表的实现分配
您的结构看起来像节点结构,而不是列表。所以我将使用struct Node而不是List来避免混淆。
我不知道你的p来自哪里,但实际上你将如何在你的函数中创建p。
Node *p = new Node();
p->data = 1;
p->next = NULL;
现在如果你需要添加一个新的,做同样的事情
Node *q = new Node ();
q->data = 2;
q->next = NULL;
//assign q after p
p->next = q;
您还可以在结构
中创建构造函数Node (Node *previous, int newData)
{
List *q = new Node ();
q->data = newData;
q->next = NULL;
previous->next = q;
}
确保在完成这些指针后调用delete来清理这些指针