Mọi người xem giúp em hàm sortedIntersect ạ. Em biết em đã xử lý sai cái tail nhưng không biết phải sửa thế nào
#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;
}
}
}
SinglyLinkedListNode * sortedIntersect(SinglyLinkedListNode *a, SinglyLinkedListNode *b)
{
SinglyLinkedList *result = new SinglyLinkedList();
SinglyLinkedListNode *temp1 = a, *temp2 = b;
SinglyLinkedListNode *tail=result->head;
while (temp1 && temp2)
{
if (temp1->data == temp2->data)
{
result->insert_node(temp1->data);
tail = tail->next;
tail->next = NULL;
temp1 = temp1->next;
temp2 = temp2->next;
}
else if (temp1->data < temp2->data)
{
temp1 = temp1->next;
}
else temp2 = temp2->next;
}
return result->head;
}
int main()
{
SinglyLinkedList *llist = new SinglyLinkedList(), *llist2 = new SinglyLinkedList();
llist->insert_node(1);
llist->insert_node(2);
llist->insert_node(5);
llist->insert_node(8);
llist2->insert_node(3);
llist2->insert_node(4);
llist2->insert_node(5);
llist2->insert_node(8);
sortedIntersect(llist->head, llist2->head);
return 0;
}