C++ Data Structure: Đảo ngược danh sách liên kết tròn

Chủ đề: Thuật toán lập trình và cấu trúc dữ liệu.

Cách đảo ngược một danh sách liên kết tròn

Đầu vào là một danh sách liên kết tròng với kích thước n.

Đầu ra thực hiện nhiệm vụ đảo ngược chiều của danh sách liên kết như hình minh họa sau

Code Minh Họa

#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace std;

// Make Node Struct
struct Node 
{
	int data;
	Node* next;
};


Node* getNode(int data)
{
	Node* newNode = new Node;

	newNode->data = data;
	newNode->next = NULL;
	return newNode;
}


void ImpReverse(Node** head_ref)
{
	if (*head_ref == NULL)
		return;

	Node* prev = NULL;
	Node* current = *head_ref;
	Node* next;
	do 
	{
		next = current->next;
		current->next = prev;
		prev = current;
		current = next;
	} 
	while (current != (*head_ref));

	(*head_ref)->next = prev;
	*head_ref = prev;
}

void ShowList(Node* head)
{
	if (head == NULL)
		return;

	Node* temp = head;
	do 
	{
		std::cout << temp->data << " ";
		temp = temp->next;
	} 
	while (temp != head);
}


int main()
{
	// Make circular list (1, 2, 3, 4)
	Node* head = getNode(1);
	head->next = getNode(2);
	head->next->next = getNode(3);
	head->next->next->next = getNode(4);
	head->next->next->next->next = head;

	cout << "Danh sach lien ket tron ban dau: ";
	ShowList(head);

	ImpReverse(&head);

	cout << "\nDanh sach lien ket trong sau khi dao nguoc: ";
	ShowList(head);

	_getch();
	return 0;
}

 

2 thoughts on “C++ Data Structure: Đảo ngược danh sách liên kết tròn

  • 4 February, 2021 at 7:34 pm
    Permalink

    Anh ơi cho em hỏi chỗ Node* là kiểu con trỏ đúng không anh? Nếu đúng thì dùng con trỏ ở đó để làm gì vậy ạ? Anh có thể gửi link để em tự tìm hiểu cũng được =).

    Reply
    • 5 February, 2021 at 7:02 am
      Permalink

      em chụp ảnh rồi bôi đỏ đoạn code em cần hỏi, sau đó post lên group nhé, anh sẽ vào xem.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.