我有以下节点的实现。

   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/

10-14 08:03