重新设计了轨道管理类

This commit is contained in:
jackfiled 2022-06-26 13:06:22 +08:00
parent a044ff1044
commit 4709b1ad7c
2 changed files with 59 additions and 30 deletions

View File

@ -41,11 +41,14 @@ public:
rail_node_t *rails;
/**
*
* @param distance
* @param node_number
*
*/
explicit RailsModel(int distance = 2, int node_number = 5);
int node_num;
explicit RailsModel();
~RailsModel();
/**
*
* @param head
@ -53,9 +56,18 @@ public:
* @return
*/
rail_node_t *FindNode(int node_num) const;
~RailsModel();
/**
*
* @param distance
* @param node_number
*/
void CreateRails(int distance, int node_number);
/**
*
*/
void FreeRails();
};

View File

@ -4,8 +4,47 @@
#include "railsModel.h"
RailsModel::RailsModel(int distance, int node_number)
RailsModel::RailsModel()
{
rails = nullptr;
node_num = 0;
}
RailsModel::~RailsModel()
{
FreeRails();
}
rail_node_t *RailsModel::FindNode(int node_num) const
{
if (rails == nullptr)
{
return nullptr;
}
rail_node_t *result = nullptr;
rail_node_t *node = rails;
do
{
if(node->id == node_num)
{
result = node;
break;
}
node = node->next_node;
} while (node != rails);
return result;
}
void RailsModel::CreateRails(int distance, int node_number)
{
if(rails != nullptr)
{
FreeRails();
}
rail_node_t *head;
rail_node_t *node;
@ -33,9 +72,10 @@ RailsModel::RailsModel(int distance, int node_number)
head->last_node = node;
rails = head;
node_num = node_number;
}
RailsModel::~RailsModel()
void RailsModel::FreeRails()
{
rail_node_t *node = rails;
@ -52,26 +92,3 @@ RailsModel::~RailsModel()
// 将指针置为空
rails = nullptr;
}
rail_node_t *RailsModel::FindNode(int node_num) const
{
if (rails == nullptr)
{
return nullptr;
}
rail_node_t *result = nullptr;
rail_node_t *node = rails;
do
{
if(node->id == node_num)
{
result = node;
break;
}
node = node->next_node;
} while (node != rails);
return result;
}