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