我有一个家庭作业,我需要创建一个二叉树,并在每个节点内指向一个链表。
我的linkList程序来自之前的任务。但是在我的二叉树结构中,我想从链表中访问结构。
以下是我所谈论的一个例子。
BinaryTree.h
#ifndef BinaryTree_h
#define BinaryTree_h
#include <iostream>
using namespace std;
struct bnode {
bnode * lChild;
bnode * rChild;
string word;
lnode * lineList; // <--------- This is what I would like to accomplish
};
LinkedList.h
#ifndef LinkedList_h
#define LinkedList_h
#include <iostream>
using namespace std;
struct lnode {
lnode * prev;
int data;
void *pointerData;
lnode * next;
};
答案 0 :(得分:1)
您有两种选择:
将#include "LinkedList.h"
添加到BinaryTree.h
:
#ifndef BinaryTree_h
#define BinaryTree_h
#include <iostream>
#include "LinkedList.h" // <-- here
struct bnode {
bnode * lChild;
bnode * rChild;
std::string word;
lnode * lineList;
};
#endif
因为lineList
成员只是一个指针,你可以(并且应该)转发声明lnode
类型,而不必完全定义它:
#ifndef BinaryTree_h
#define BinaryTree_h
#include <iostream>
struct lnode; // <-- here
struct bnode {
bnode * lChild;
bnode * rChild;
std::string word;
lnode * lineList;
};
#endif
在后一种情况下,您仍然需要在需要访问#include "LinkedList.h"
成员内容的任何源文件中使用lineList
。