From 4709b1ad7c3abea8ac0e8745981678f66b14c09b Mon Sep 17 00:00:00 2001 From: jackfiled Date: Sun, 26 Jun 2022 13:06:22 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E8=AE=BE=E8=AE=A1=E4=BA=86?= =?UTF-8?q?=E8=BD=A8=E9=81=93=E7=AE=A1=E7=90=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/railsModel.h | 22 +++++++++++---- src/railsModel.cpp | 67 +++++++++++++++++++++++++++----------------- 2 files changed, 59 insertions(+), 30 deletions(-) diff --git a/include/railsModel.h b/include/railsModel.h index b57a7b7..f138507 100644 --- a/include/railsModel.h +++ b/include/railsModel.h @@ -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(); }; diff --git a/src/railsModel.cpp b/src/railsModel.cpp index 4857d56..283e002 100644 --- a/src/railsModel.cpp +++ b/src/railsModel.cpp @@ -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; } \ No newline at end of file