我想确保在将值添加到链表之前,如果数字是奇数,我想将其添加到头(我的别名在左边(,否则我想将它添加到最后(我的昵称在右边(以下是我的代码节点结构
struct Node{
int data;
Node *next;
};
链表类
class LinkedList{
Node *left;
Node *right;
public:
LinkedList(){
left = NULL;
right = NULL;
};
void insert(int value)
{
Node *t = new Node();
t->data = value;
t->next = left;
left = t;
if(right == NULL)
right = t;
}
void append(int value)
{
Node *temp = new Node();
temp->data = value;
temp->next = NULL;
right = temp;
if(left == NULL)
left = temp;
}
void add(int value){
if(value % 2 == 0)
append(value);
else
insert(value);
}
void print(){
Node *node = left;
while(node != NULL)
{
cout << node->data << " ";
node = node->next;
}
}
};
主方法
LinkedList list = LinkedList();
list.add(9);
list.add(16);
list.add(12);
list.add(12);
list.add(7);
list.print();
但结果是:
12 12 16 9
您忘记了在append()
中将最后一个(最右边(节点链接到新节点。在更新right
之前,您需要添加:
if(right != nullptr) { right->next = temp; }
所以它将变成:
void append(int value)
{
Node *temp = new Node();
temp->data = value;
temp->next = NULL;
if(right != nullptr) { right->next = temp; }
right = temp;
if(left == NULL)
left = temp;
}
另外,不要忘记你的析构函数/复制构造函数/赋值运算符,以确保你对分配的内存是安全的!