Như tiêu đề ạ, nhưng khi em đưa nguyên hàm Rotation vào phía dưới hàm insert_node trong class SinglyLinkedList thì nó lại ra được kết quả đúng. Mọi người chỉ em với.
Code trong function Rotation là đưa node cuối lên node đầu tương ứng với số lần k
VD: list: 3-5-6-7, k=1 => 7-3-5-6
k=2 => 6->7-3-5
#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 swap(SinglyLinkedListNode *a, SinglyLinkedListNode *b)
{
int temp = a->data;
a->data = b->data;
b->data = temp;
}
void Rotation(SinglyLinkedListNode * head, int k)
{
while (k > 0)
{
SinglyLinkedListNode *preLast = head, *first = head;
while (preLast->next->next)
{
preLast = preLast->next;
}
SinglyLinkedListNode *last = preLast->next;
preLast->next = NULL;
last->next = first;
head = last;
k--;
}
}
int main()
{
SinglyLinkedList *llist = new SinglyLinkedList();
llist->insert_node(3);
llist->insert_node(5);
llist->insert_node(6);
llist->insert_node(7);
Rotation(llist->head,1);
print_singly_linked_list(llist->head, " ");
return 0;
}