我有像这样的通用链表结构
template <typename E, typename F>
struct node
{
public:
E data;
node<E, F>* next;
node<F, F>* down;
};
和这样的一个类
class LetterList
{
private:
node <char, Dictionary> *head;
public:
LetterList(){head = NULL;};
void createLetterList();
void print();
};
“node * head”中的词典是另一个阶级; 我想要做的是使用LetterList类将所有字母插入到链表中。这是我的代码......
node <char, Dictionary> *p = new node <char, Dictionary>;
p->data = 'A';
char ch;
if (head == NULL)
{
p->next = NULL;
head = p;
}
node <char, Dictionary> *q = head;
while (true)
{
for (int i=66; i<91;i++)
{
ch = char (i);
p->data = ch;
q ->next = p;
if (i == 90)
{
q->next = NULL;
}
else
q = q->next;
}
break;
}
}
执行此代码后,链表的头部为'Z',但不应该是'A'?请告诉我我在这方面做错了什么。
答案 0 :(得分:0)
您只分配一个节点。如果您希望列表中的节点“A”到“Z”,则需要随时分配新节点以将其添加到列表中。
答案 1 :(得分:0)
如jcopenha所述,您不是动态创建新节点。您只需将“q”指向头部并继续使用A,B,C等更新其数据,依此类推,直到Z.更新代码后应该有效:
while (true)
{
node <char, Dictionary> *temp;
temp = NULL;
p -> next = temp;
for (int i=66; i<91;i++)
{
ch = char (i);
node <char, Dictionary> *z = new node <char, Dictionary>;
z->data = ch;
temp = z;
temp->next = NULL;
temp = temp->next;
}
break;
}