2016-06-16 94 views
1

我知道這是嚴重的基本的東西,但我的生活,我似乎對不能明白我怎麼會去這樣做:LinkedList的節點插入

問:給出了下面的結構定義節點:

struct Node 
{ 
    int value; 
    Node* next; 
}; 

而鑑於聲明:

Node* head; 

節點以下鏈接列表已建成,用頭POI NTER分配給節點對象3:

head ----> 3 ----> 9 ----> 34 ----> -5 ----> NULL 

收件將在第三節點的值34存儲在變量結果的單C++的聲明:

int result =

在哪裏將是一個很好的地方開始?這是要求我將一個元素添加到列表中,還是將一個全新的節點添加到列表中?如此迷茫!!

+1

它要求你讀取第三個節點並將值存儲在'result'中。 –

+0

一個好的開始將從頭開始,並遵循下一個指針,直到你處於正確的位置。那麼你應該把價值轉化爲可變結果 – Thomas

回答

3

head->next->next將指向鏈接列表中的第三個節點。 所以,

int result = head->next->next->data;

將值存儲在該列表中的第三個節點。

問題是要求您讀取第三個節點並將其存儲在結果中。

+0

請原諒我先生,但請記住你的分號。畢竟我們在做C++。對不起,無法抗拒:-) –

+0

所以它不要求我插入任何東西。好的,我就是這麼讀的,但是我很困惑,因爲它好像已經有34了。如果名單很大,我想要一個300左右的值。有沒有更好的方式比頭 - >下一個 - >下一 - >下一 - >下一 - >下一 - >下一個 - >下一個 - >下一步等... – Podo

+1

然後你應該使用循環;) – Thomas

1

循環的示例。

Node* temp = head; 
int number = 300; //the place you are looking for 
if(temp) 
{ 
    int i; 
    for(i = 0 ; i< number && temp->next != nullptr ;i++) 
    { 
     temp = temp->next; 
    } 
    if(i == 300) 
    { 
     //found you value; 
     result = temp->value; 
    } 
} 
2

鏈表使用鏈概念,其中沿整個長度所述鏈的每個鏈節在每個鏈路的連接。
人們用各種方式表示這一點。一個例子是:

struct Node { 
    int value; 
    Node* front; 
}; 

或者:

struct Node { 
    int value; 
    Node* next; 
}; 

當你建立一個鏈表的頭,你正在創造鏈中的第一個節點:

Node* head; 
head = NULL; // this is an empty linked list 

無論何時您想要添加一個節點(或「鏈接」)到鏈中,您都會將新節點傳遞到「頭」,以便跟蹤鏈:

void newNode(int value, Node* head) 
{ 
    Node *node; 
    node = new Node*; // or (Node*)malloc(sizeof(Node)); 
    node->value = value; 
    node->next = head; 
    head = node; 
} 

使用此概念,您可以添加任意數量的鏈接到您的鏈中。托馬斯和瓦倫有這方面的很好的例子。 希望這有助於。

+0

由於這是單鏈表,我很困惑,它應該連接在前端和後端。你什麼意思? –

+0

對不起一月,我正想着在我頭腦中排隊一分鐘。編輯這:) –