2016-10-24 9 views
0

私が構造を持っている場合: /*リンクされたリスト構造*/オブジェクト全体としてのノードとノードへのポインタの違いは?

struct list 
{ 
    struct list *prev; 
    int data; 
    struct list *next; 
} ** *node = NULL, *first = NULL, *last = NULL, *node1 = NULL, *node2 = NULL**; 

class linkedlist { 
public: 

    /* Function for create/insert node at the beginning of Linked list */ 
    void insert_beginning() { 
     **list *addBeg = new list;** 
     cout << "Enter value for the node:" << endl; 
     cin >> addBeg->data; 
     if(first == NULL) { 
      addBeg->prev = NULL; 
      addBeg->next = NULL; 
      first = addBeg; 
      last = addBeg; 
      cout << "Linked list Created!" << endl; 
     } 
     else { 
      addBeg->prev = NULL; 
      first->prev = addBeg; 
      addBeg->next = first; 
      first = addBeg; 
      cout << "Data Inserted at the beginning of the Linked list!" << endl; 
     } 
    } 

使用する、(2つのポインタとデータとの)新しいノードとノードから離れてちょうど単一のポインタを作成する間の構文の違いは何ですか同じプログラムで(太字部分の違い)

+1

あなたが何を求めているのか分かりません。多分あなたは念頭に置いている**両方の代替案の例を含めることができますか? –

+6

Google「so C++ book list」 –

+0

構文の違いはどういう意味ですか?前のノードと次のノードへのポインタは、リンクされたリストやあなたが持っているデータ構造の中で前後に移動できるようになります。それはちょうどあなたが設計しているものに依存します – brianxautumn

答えて

0

ここにいくつかの例があります。

宣言node可変

node n; 
ここ n

タイプnodeの変数またはインスタンスです。ポインタの宣言

node * pointer_to_node; 

注意タイプ識別子後*タイプnodeします。 *は、ポインタの宣言に使用されます。

また、ポインタが何かを指していないことにも注意してください。

ポインターのポインティング
ポインターは、そのタイプのものを指すことができます。だから、次は有効です。上記の例で

node n; 
node * pointer_to_node = &n; 

pointer_to_nodeは変数nポイントに初期化されます。上記の文において

node * pointer_to_dynamic = new node; 

、プログラムはダイナミックメモリにnodeインスタンスを割り当てます。メモリの場所はpointer_to_dynamic変数に割り当てられます。つまり、変数pointer_to_dynamicは、新たに割り当てられたダイナミックメモリを指すようになりました。

関連する問題