重新设计了轨道管理类

This commit is contained in:
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;
@@ -51,27 +91,4 @@ 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;
}