标签:blog io os ar for sp 2014 log 代码
链表的倒序输出,我们可能想到的方法就是把链表翻转后然后再遍历一遍,这样的话时间复杂度是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; }
标签:blog io os ar for sp 2014 log 代码
原文地址:http://blog.csdn.net/ddupd/article/details/40488889