c++ - 在 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;
}
也不要忘记你的析构函数/复制构造函数/赋值运算符,以确保你分配的内存是安全的!
推荐阅读
- json - JSONObject 和 Streams/Lambda
- pdfbox - Apache PDFBOX renderImageWithDPI UTF-8 问题
- flutter - 如何在屏幕中正确放置 CustomPainter 动画?
- ios - Flutter - 如何根据环境有条件地设置变量(TestFlight / App Store)
- c# - 为什么我不能使用自己的函数创建游戏对象?
- android - 在 Kotlin 的模拟器中看不到任何图像
- javafx - javafx.fxml.LoadException - ?
- python - 在字典中返回值的函数
- android - 从 Android 应用程序中读取 Google 电子表格并列出该数据?
- python - TypeError:('关键字参数不理解:','输入')