首页 > 代码库 > 链表的倒序输出
链表的倒序输出
链表的倒序输出,我们可能想到的方法就是把链表翻转后然后再遍历一遍,这样的话时间复杂度是O(n),但是缺点是代码稍微复杂。或者是开辟一个数组,顺序遍历一个链表把元素复制到数组里面,最后再把数组倒序输出。其实这道题目时间复杂度都不可能低于O(n),但是考虑用栈的话代码就可能非常简单,代码如下所示:
#include <iostream> using namespace std; struct Node { int key; Node* next; }; Node* createList(int arr[],int nLength); void printList(Node* head); void reversePrint(Node* head); void clearList(Node* head); void main() { int arr[] = {1,3,5,7,9}; int nLength = sizeof(arr)/sizeof(arr[0]); Node* head = createList(arr,nLength); printList(head); reversePrint(head); clearList(head); } Node* createList(int arr[],int nLength) { Node* head = new Node; head->key = arr[0]; head->next = NULL; Node *p = head; for(int i=1;i<nLength;i++) { Node* ptr = new Node; ptr->key = arr[i]; ptr->next = NULL; p->next = ptr; p = p->next; } return head; } void printList(Node* head) { Node* p = head; while( p!= NULL ) { cout<<p->key<<endl; p=p->next; } } void clearList(Node* head) { Node* p = head; Node* ptr; while( p!= NULL ) { ptr = p->next; delete p; p = ptr; } } void reversePrint(Node* head) { if( head != NULL ) { if( head->next != NULL ) reversePrint(head->next); } cout<<head->key<<endl; }
链表的倒序输出
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。