5 從頭到尾列印鍊錶中的節點

2021-07-04 21:01:07 字數 2081 閱讀 8787

struct linknode

;title:

一、從尾到頭列印單鏈表list

二、對鍊錶頭部進行操作

thought:

一、1、利用棧,從頭開始依次將鍊錶中的value壓入棧,

然後再一次彈出棧頂元素,實現反向列印鍊錶

2、利用遞迴,每次訪問結點時,先遞迴輸出它後面的結點

二、對頭部做處理時,有兩種方法

1、建立乙個新的空指標p(型別與結點指標一樣)p->next = list;

然後可對list的頭結點做插入或刪除操作,但是操作函式要有返回值

返回值就是p->next(需要熟練掌握此種方法)

2、對頭結點的操作函式如果沒有返回值,則其引數應該是指向鍊錶list的指標

即指向指標的指標,linknode* link=list,此時(*link)->next 等價於list->next;

如果引數是list,則對頭結點的操作只在此函式中有效,操作結果不儲存,

離開此函式,這些操作產生的結果無法顯示

realize:

一、利用棧

1、先建立乙個元素為鍊錶結點的棧stacknodes

棧的元素型別設定為鍊錶結點的型別

2、鍊錶元素依次壓入棧push

3、依次取(top)棧頂元素(top()返回此棧頂元素即結點指標),

輸出此結點的資料元素

將此結點指標彈出pop(pop()無返回值)

二、遞迴

#include#include#includeusing namespace std;

struct linknode

;linknode *create(int ); //建立新鍊錶

linknode *addtohead_k(linknode * ,int ); //向頭結點插入,注意對頭結點的處理

linknode *delete_k(linknode * ,int ); //刪除結點,注意對頭結點的處理

void inverse_print(linknode *link); //利用棧的先進後出實現鍊錶的反序輸出

void inverse_print_rescurise(linknode *link); //遞迴實現鍊錶的反序輸出

void print(linknode *link);

linknode *create(int n)

linknode *temp = new linknode;

temp->m_value = k;

temp->next = null;

p->next = temp;

p = temp;

} return head->next;

}linknode *addtohead_k(linknode *link,int k)

else

head->next = link;

return head->next;

}linknode *delete_k(linknode *link,int k)

if( p->m_value == k) //頭結點資料等於k時,對頭結點進行操作(建立乙個空指標head)

while (p->next != null && p->next->m_value != k)

p = p->next;

if(p->next != null && p->next->m_value == k)

if(found)

cout << k << "在單鏈表中。" << endl;

else

cout << k << "不在單鏈表中。" << endl;

return link;

}void inverse_print(linknode *link)

while ( !nodes.empty())

cout << endl;

}void inverse_print_rescurise(linknode *link)

void print(linknode *link)

cout << endl;

}int main()

從頭到尾列印鍊錶

輸入乙個鍊錶的頭節點,從尾到頭反過來返回每個節點的值 用陣列返回 題目描述了乙個先進後出的結構,很容易想到棧,進而想到遞迴,遞迴也可以實現先進後出,只要將本節點的操作置於遞迴之後即可。棧 definition for singly linked list.public class listnode ...

從頭到尾列印鍊錶

牛客網上面的乙個題 題目描述 輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個arraylist。struct listnode class solution for vector reverse iterator riter list.rbegin riter list.rend riter retur...

從頭到尾列印鍊錶

鍊錶的結構很簡單,它由指標把若干個節點連線成鏈狀結構。由於鍊錶是一種哄抬的資料結構,其操作需要對指標進行操作。因為在船艦鍊錶時,無須知道鍊錶的長度。當插入乙個節點時,我們只需要為新節點分配記憶體,然後調整指標的指向來確保新節點被鏈結到鍊錶當中。記憶體分配不是在建立鍊錶時一次性完成的,而是每新增乙個節...