2016-10-24 1 views
0

나는 구조가있는 경우 : /* 링크 된 목록 구조 * (2 포인터와 데이터) 새 노드를 만드는 사이의 구문 차이 떨어져 노드에서 단지 하나의 포인터가 무엇/전체 개체로 노드와 노드에 대한 포인터 간의 차이점은 무엇입니까?

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; 
     } 
    } 

, 사용 같은 프로그램에서. (굵게 표시된 부분의 차이)

+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은 새로 할당 된 동적 메모리를 가리 킵니다.

관련 문제