2013-12-15 73 views
0

我应该写一个带有标题的链接列表。但我想我还没有明白标题的确切含义!标题指向列表的第一个项目,还是第一个项目本身?我问你检查我的代码是否生成带有标题的链表?如果不是,我应该怎么做才能有一个标题链表?这里是代码:带有标题的链接列表

#include<iostream> 
using namespace std; 

class node 
{ 
    int info; 
    node *next; 
    friend class H_list; 
}; 

class node; 
class H_list 
{ 
public: 
    H_list(); 
    int isempty(); 
    void insert(); 
    void del(); 
    void display(); 
private: 
    node *header; 
    node *L; 
}; 

//*****************************************************************// 

H_list::H_list() 
{ 
    header=new node; 
    header->next=NULL; 
    L=NULL; 
} 

//*****************************************************************// 
+3

我建议问你的教授他的意思是什么。 – nhgrif

回答

1

一个头(单链表)是一个虚拟节点在开始简化插入开始。

对于循环链表,术语“标题”节点有时用于连接起始端的虚拟节点。一个空的这样的列表只包含链接到它自己的头节点。它消除了一些插入和删除的特殊情况。

在任何情况下,头节点都不需要是完整的完整节点。如果链接位于每个节点的起始位置,那么只有该部分需要位于标题的那个部分。此外,标题不一定需要动态分配。

+0

好的,我应该在哪里定义这个虚拟节点? –

+0

我会在'H_list'构造函数中建议。顺便说一下,通过声明(但不实现)“private”拷贝构造函数和同样拷贝赋值操作符,确保“H_list”从不被复制是一个好主意。或者从一个类继承,例如称为Non_copyable,这样做(这样的类需要一个公共的默认构造函数才能有用)。 –

+0

我应该如何在H_list中定义它?节点*标题=新节点; ? –

2

标题的作用是跟踪你的列表。如果您指的是单个列表,则标题位于单个列表的开头,并指向第一个节点。

header->firstNode->secondNode->... 

头帮助找到的第一个节点在列表中

如果该列表是一个双向链表,那么你需要一个头和一个回能够访问列表轻松地从头到尾。

+0

有用,我想我知道了tnx –

+0

这是我在这个网站上的第一个答案;)祝你好运 – KhaledMohamedP