在c++中指定插入或追加到链表



我想确保在将值添加到链表之前,如果数字是奇数,我想将其添加到头(我的别名在左边(,否则我想将它添加到最后(我的昵称在右边(以下是我的代码节点结构

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

另外,不要忘记你的析构函数/复制构造函数/赋值运算符,以确保你对分配的内存是安全的!

相关内容

  • 没有找到相关文章

最新更新