首页 > 代码库 > 05_从尾到头打印链表
05_从尾到头打印链表
#include <iostream> #include <vector> using namespace std; typedef struct ListNode { int data; struct ListNode * next; ListNode(int d) : data(d), next(NULL){} }; ListNode *initList() { ListNode * head = NULL; ListNode * p = NULL; int number = 10; int i = 0; head = new ListNode(0); p = head; for (i = 1; i < number; i++) { p->next = new ListNode(i); p = p->next; } return head; } void printList(ListNode *head) { ListNode * p = head; if (!head){ return; } while (p && p->next) { cout<<p->data<<"->"; p = p->next; } if (p) { cout<<p->data<<endl; } } //using vector to store the ListNode->data, and print it from the end to start void reversePrintListUsingVector(ListNode *head){ vector <int> vec; if(!head) { return; } ListNode *p = head; while (p) { vec.push_back(p->data); p = p->next; } for (vector<int>::size_type i = vec.size() - 1; i > 0; i--) { cout<<vec[i]<<"->"; } cout<<vec[0]<<endl; } //change the ListNode:delete the head->next and insert the deleted node after the newHead; ListNode *reversePrintList(ListNode *head){ if(!head) { return NULL; } ListNode *deletedNode = head; ListNode *oldHead = head; ListNode *tempHead = new ListNode(0); while(oldHead) { deletedNode = oldHead; oldHead = oldHead->next; deletedNode->next = tempHead->next; tempHead->next = deletedNode; } ListNode * reserverdhead = tempHead->next; delete tempHead; return reserverdhead; } int main(){ /********In the first way, the List was not changed, but we need a vector to store the list*************/ ListNode * head = initList(); cout<<"initial List:"<<endl; printList(head); cout<<"the first way to reverse the List:"<<endl; reversePrintListUsingVector(head); /********In the second way, the List was changed and we need to new a listNode*************/ cout<<endl; cout<<"initial List:"<<endl; printList(head); cout<<"the second way to reverse the List:"<<endl; head = reversePrintList(head); printList(head); }
05_从尾到头打印链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。