2014-10-05 84 views
1

我試圖做出我的C鏈表++類,我看着從我的教授一些代碼:語法鏈表C++

void List::add(char c) 
{ 
    Node *newNode(new Node(c)); 

    if (last == nullptr) 
     first = last = newNode; 
    else { 
     last->next = newNode; 
     last = newNode; 
     } 
} 

int List::find(char c) 
{ 
    Node *node(first); 
    int  i(0); 

    while (node) { 
     if (node->c == c) 
      return i; 
     node = node->next; 
     i++; 
     } 
    return -1; 

以下是頭文件中的類聲明:

class List 
{ 
public: 
    List(void); 
    ~List(void); 
    void add(char c); 
    int find(char c); 
    bool remove(int index); 
    int length(void); 

    friend std::ostream& operator<<(std::ostream& out, List& list); 

private: 
    class Node 
    { 
    public: 
     Node(char c) : c(c), next(nullptr) { } 
     char c; 
     Node *next; 
    }; 

    Node *first; 
    Node *last; 
}; 

第一個問題:圓括號是什麼意思,以及使用它們的正確方法是什麼?

Node *newNode(new Node(c)); 
Node *node(first); 
int  i(0); 

第二個問題:以下是什麼意思?

Node(char c) : c(c), next(nullptr) { } 

我在過去使用struct定義了一個節點;是不同的語法,因爲這是一個類?

回答

0

此聲明

Node *newNode(new Node(c)); 
Node *node(first); 
int  i(0); 

相當於

Node *newNode = new Node(c); 
Node *node = first; 
int  i = 0; 

類節點的這種構造

Node(char c) : c(c), next(nullptr) { } 

使用MEM-初始化列表: c(c), next(nullptr)初始化類的數據成員。 即數據成員c通過構造函數的參數c和數據成員初始化next通過指針文字nullptr

+0

謝謝初始化!一旦我獲得更多的聲譽,我將能夠upvote你的答案。 – Aida 2014-10-05 22:21:49