Em thường hay cảm thấy khó khăn và bối rối trong việc xác định temp->next, temp->next->next
là phần nào, là địa chỉ hay cả cái node hay khi gọi câu lệnh temp->next = newNode trong hàm removeDuplicates thì temp->next là phần nào ạ. Mong mọi người chỉ cho em để em có thể hiểu cặn kẻ một tí ạ. Em xin cảm ơn mọi người.
#include "pch.h"
#include <iostream>
#include <string>
#include <stack>
using namespace std;
class SinglyLinkedListNode {
public:
int data;
SinglyLinkedListNode *next;
SinglyLinkedListNode(int node_data) {
this->data = node_data;
this->next = nullptr;
}
};
class SinglyLinkedList {
public:
SinglyLinkedListNode *head;
SinglyLinkedListNode *tail;
SinglyLinkedList() {
this->head = nullptr;
this->tail = nullptr;
}
void insert_node(int node_data) {
SinglyLinkedListNode* node = new SinglyLinkedListNode(node_data);
if (!this->head) {
this->head = node;
}
else {
this->tail->next = node;
}
this->tail = node;
}
};
void print_singly_linked_list(SinglyLinkedListNode* node, string sep) {
while (node) {
cout << node->data;
node = node->next;
if (node) {
cout << sep;
}
}
}
void removeDuplicates(SinglyLinkedListNode * head)
{
SinglyLinkedListNode *temp = head;
SinglyLinkedListNode *newNode = new SinglyLinkedListNode();
if (temp == NULL) return;
while (temp->next)
{
if (temp->data == temp->next->data)
{
newNode = temp->next->next;
free(temp->next);
temp->next = newNode;
}
else temp = temp->next;
}
}
int main()
{
SinglyLinkedList *llist = new SinglyLinkedList();
llist->insert_node(1);
llist->insert_node(1);
llist->insert_node(5);
llist->insert_node(5);
llist->insert_node(8);
removeDuplicates(llist->head);
print_singly_linked_list(llist->head, " ");
return 0;
}