输入一个链表的头节点,从尾到头打印每个节点的值
递归法
可能存在的崩溃,当链表非常长的时候,我们的递归可能会导致溢出
void printList (ListNode* pHead) {
if (pHead != nullptr) { // 检测是否是空指针
if (pHead->next != nullptr) { // 检测是否还有下一个节点
printList(pHead->next);
}
cout<<p->value;
}
}
迭代法:
void printList (ListNode* pHead) {
stack<ListNode *> nodes;
ListNode* pNode = pHead;
while (pNode->next != nullptr) {// 将这些节点存到栈中
nodes.push(pNode);
pNode = pNode->next;
}
while (!nodes.empty()) { // 根据栈先进后出的特点,将他们逐个弹出栈中,就实现了从尾到头打印列表了
pNode = nodes.top();
cout<<pNode->value;
nodes.pop();
}
}