Bài code yêu cầu chèn 1 Node mới có giá trị y vào trước Node có giá trị x. Nếu trong danh sách không có giá trị nào bằng x thì chèn Node có giá trị y vào đầu danh sách.
Đây là bài em code. Khi chèn node vào vị trí bất kì không phải đầu thì hoàn toàn bình thường ko vấn đề gì. Nhưng khi chèn vào đầu danh sách thì lại không chèn được. Mọi người giúp e xem được không ạ?
struct Node
{
int value;
Node* next;
};
bool is_inNode (Node* head, int x)
{
for (Node* p = head; p != NULL; p = p->next)
{
if (p->value == x)
return true;
}
return false;
}
Node* insertBefore(Node* head, int x, int y){
Node* newNode = new Node;
newNode->value = y;
newNode->next = NULL;
Node* before = NULL;
if (!is_inNode(head, x))
{
newNode->next = head;
head = newNode;
return head;
}
for (Node* p = head; p != NULL; p = p->next)
{
if (p == head)
{
if (p->value == x)
{
newNode->next = head;
head = newNode;
}
}
else
{
if (p->value == x)
{
before->next = newNode;
newNode->next = p;
}
}
before = p;
}
return head;