2013-02-18 68 views
-1

我有一個字符串數組,我應該創建一個鏈表。問題是我只能使用數組。我查過的所有東西都說要使用結構和節點,我不知道該從哪裏去。我知道我的代碼是不正確的,我有指針指向數組中的一個元素,所以它們並沒有真正連接。如果任何人都可以在正確的方向指向我,這將是驚人的無法創建鏈表

這裏是我迄今爲止

#include <iostream> 
#include <string> 

using namespace std; 


int main() 
{ 
string names [4] = {"Dick", "Harry", "Sam", "Tom", " "}; 
string *nameptr[4]; 

for(int x = 0; x < 4; x++) 
{ 
    nameptr[x] = &names[x]; 
    cout << *nameptr[x] << " is at position " << x << " and points to "; 
    cout << &nameptr[x] << endl; 
} 
return 0; 

} 
+0

有很多關於鏈表的問題......你看了一些指導? – jogojapan 2013-02-18 04:02:51

+1

名稱有5個元素,但你只用4初始化:) – billz 2013-02-18 04:04:17

+0

@blizz 5th是''「''。 – 2013-02-18 04:05:49

回答

2

下面是在C鏈表++教程:

http://www.dreamincode.net/forums/topic/31357-c-linked-lists-custom-linked-lists-part-1/

你應該在未來尋找並先走一步,然後當你問這裏的人將能夠更好地幫助你解決你的問題。其實閱讀本以及:

http://mattgemmell.com/2008/12/08/what-have-you-tried/

+0

謝謝你的鏈接,但我不允許使用結構。使用數組我知道如何使用結構來創建鏈表,但僅限於數組我有點卡住 – Dorden 2013-02-18 04:20:13

+0

你確定你不能使用數組,沒有鏈接的列表沒有任何意義。 – 2013-02-18 05:31:16

0

你說的「我只能用數組」是什麼意思?你只知道如何使用數組,或者你僅限於使用數組,或者?

你擡頭看了一些告訴你使用結構的東西 - 你有沒有試過這樣做?這裏不在你的代碼中。

無關你的實際問題,但你已經宣佈的4串(string names [4])數組,然後你想初始化數組有5個項目。

我的建議與您所看到的類似:使用結構,我會補充說您還需要使用堆(c中的malloc,C++中的new)。該結構需要一個指向下一個列表元素的鏈接指針,並且在某處存儲數據本身,在這種情況下可能只是一個char指針。

+0

說明說我只能使用數組。如果我可以使用結構,我現在就完成了。關於嘗試用5個項目初始化數組,我正在嘗試一些不起作用的東西,並忘記用剩下的廢棄代碼刪除最後一部分。 – Dorden 2013-02-18 04:18:44

2

實際上,如果使用數組,只需要一個指向第一個元素的指針,並且可以通過指針算術來訪問數組的其餘部分。

但是,如果你想要一個真正的鏈接列表。那麼你可以做這樣的事情:

struct mydata{ 
    std::string data; 
    struct mydata* next; 
} 

mydata names[4] = {{"Dick",NULL}, {"Harry",NULL}, {"Sam",NULL}, {"Tom",NULL}, {" ",NULL}}; 
//here you establish the link 
names[0].next = &names[1]; 
names[1].next = &names[2]; 
names[2].next = &names[3]; 
names[3].next = &names[4]; 
//here is the pointer to the head; 
mydata* nameptr = names; 

while(nameptr) 
{ 
    cout << nameptr->data; 
    nameptr = nameptr->next; 
}