我有以下节点的实现。
struct node*{
int data;
node* next;}
现在,我添加一些值并创建一个链表,但是我想跟踪链表的开头。
有什么建议么?
最佳答案
太棒了!
很想知道如何实现链表!
但是,您应该添加一个高级实例,使您可以更轻松地对其进行管理:
类实施
这是一种较重的管理方式,如果您想跟踪自己的动作(并且不要弄乱两个清单),那么管理链接列表的类可能会很好!可能是这样的:
class my_linked_list {
private:
struct node {int value; struct node* next;}; //by doing this only you can manage your linked list!
struct node* m_head;
public:
my_linked_list() : m_head(nullptr) {}//here you just instantiate teh manager, not the head!
void append_value(int a);// here is some
int pop_value(); // methode which allow you to manage your nodes easily!
};
仅功能实现
轻量级版本可能仅使用功能来管理它,例如:
node* create_head(int);//create your first node
void append_value(node**,int); // manage your node, call it like append_value(&head, value); because head can move from nullptr -> heap allocated struct!
int pop_value(node**); // same as previous, heap allocated-> nullptr
void delete_list(node**);//delete all and put your head to nullptr
编辑
正如@anatolyg所说,前面的示例更像是C示例!在C ++中做到这一点的好方法是:
node* create_head(int);//create your first node
void append_value(node*&,int); // manage your node, call it like append_value(&head, value); because head can move from nullptr -> heap allocated struct!
int pop_value(node*&); // same as previous, heap allocated-> nullptr
void delete_list(node*&);//delete all and put your head to nullptr
瞧!
更多建议只是评论!
关于c++ - 如何跟踪单个链表的开头?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26729324/