簡體   English   中英

如何在main中使用指針數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM