重新设计了轨道管理类
This commit is contained in:
parent
a044ff1044
commit
4709b1ad7c
|
@ -41,11 +41,14 @@ public:
|
||||||
rail_node_t *rails;
|
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 轨道的头节点地址
|
* @param head 轨道的头节点地址
|
||||||
|
@ -53,9 +56,18 @@ public:
|
||||||
* @return 需要查找站点指针
|
* @return 需要查找站点指针
|
||||||
*/
|
*/
|
||||||
rail_node_t *FindNode(int node_num) const;
|
rail_node_t *FindNode(int node_num) const;
|
||||||
~RailsModel();
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建轨道链表
|
||||||
|
* @param distance 站点之间的距离
|
||||||
|
* @param node_number 站点的数量
|
||||||
|
*/
|
||||||
|
void CreateRails(int distance, int node_number);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 释放占用的内存空间
|
||||||
|
*/
|
||||||
|
void FreeRails();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,47 @@
|
||||||
|
|
||||||
#include "railsModel.h"
|
#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 *head;
|
||||||
rail_node_t *node;
|
rail_node_t *node;
|
||||||
|
|
||||||
|
@ -33,9 +72,10 @@ RailsModel::RailsModel(int distance, int node_number)
|
||||||
head->last_node = node;
|
head->last_node = node;
|
||||||
|
|
||||||
rails = head;
|
rails = head;
|
||||||
|
node_num = node_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
RailsModel::~RailsModel()
|
void RailsModel::FreeRails()
|
||||||
{
|
{
|
||||||
rail_node_t *node = rails;
|
rail_node_t *node = rails;
|
||||||
|
|
||||||
|
@ -51,27 +91,4 @@ RailsModel::~RailsModel()
|
||||||
|
|
||||||
// 将指针置为空
|
// 将指针置为空
|
||||||
rails = nullptr;
|
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;
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user