[英]How do I use an array of pointers in main?
我曾嘗試問過我的問題,但似乎並沒有正確地提出問題,而且我已經被困了2個月了。 (很傷心)
僅供參考:我從節點構建了一個鏈表:
struct node {
int number;
node *next; };
為了鏈接這些我主要使用->分配值
void insertAsFirstElement(node *&head, node *&tail, int number){
node *temp = new node;
temp->number = number;
temp->next = NULL;
head = temp;
tail = temp; }
現在,我嘗試制作一個跳過列表,該列表應具有與原始節點相同的結構,但下一個node *應該是node類型的指針數組。
struct node {
int number;
node *next[3];
};
我對如何具有節點指針數組感到困惑。 我注意到它們傾向於如下所示:node ** next,然后聲明為動態分配內存。 我只希望數組的大小為4。所以[3]。
我的問題是如何使用main()中的節點指針數組創建新節點,然后將某些內容放入節點數組的第一個插槽中?
這不適用於將事物放入數組,但確實適用於放入數字。
void insertAsFirstElement(node *&head, node *&tail, int number){
node *temp = new node;
temp->number = number;
cout<<temp->number<<endl;
temp->next[0] = tail;
cout<<temp->next[0]<<endl;
head->next[0] = temp;
cout<<head->next[0]<<endl;
}
請幫我。
->
運算符是簡寫。
如果沒有->
運算符,您將編寫
(*var).prop;
使用->
運算符,您可以編寫:
var->prop;
因此,要將節點存儲在列表的第一個位置,請編寫:
void StoreNode(node *node){
node *temp = new node;
temp->next[0]=node;
}
要從列表中的節點檢索數據,您可以編寫:
temp->next[0]->number
和寫作一樣
(*temp).next[0]->number
和寫作一樣
( *((*temp).next[0]) ).number
您的代碼這一行似乎有些困惑:
void insertAsFirstElement(node *&head, node *&tail, int number){
記住,您只是在向函數傳遞節點地址。 因此,您需要做的就是
void insertAsFirstElement(node *head, node *tail, int number){
在函數本身內部,您將必須在列表中找到正確的位置,即進入**
符號時。
乍一看,該代碼看起來還可以。 指針數組就是這樣,它是一個元素數組,每個元素都是一個指針,您可以將其與代碼顯示的語法一起使用。
但是請注意,在類內聲明指針數組時,元素不會自動初始化,因此您可能希望將尚未使用的元素修復為NULL。 此外,在跳過列表中,您可能需要知道節點已插入到哪個“級別”。
您確定問題出在那部分嗎? 通常,對於C ++,完成時並不會立即顯示錯誤,但會晚得多。 發生這種情況是由於語言的“未定義行為”規則所致(又名“程序員從不犯錯誤”)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.