链表的倒序输出

链表的倒序输出,我们可能想到的方法就是把链表翻转后然后再遍历一遍,这样的话时间复杂度是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;
}
时间: 2024-08-03 04:53:23

链表的倒序输出的相关文章

【python】 倒序输出字符串

By Dolphin , 20150730 Title : 编写一个程序,获取用户输入的一条信息,然后将其倒序输出. Code: # Reverse Word # By Dolphin,20150730 # word = input("Please Enter a word :") # creat a jumble word  jumble = "" position = len(word) - 1 while word and position != -1 : j

26、输入一个链表,反转链表后,输出链表的所有元素。

输入一个链表,反转链表后,输出链表的所有元素. 思路:  ListNode next = null;//用来保存待反序的第一个节点(head 和 next节点) ListNode pre = null;//用来保存已经反序的第一个结点 next = head.next;//首先记录当前节点的下一个节点,(保存起来) //先用next保存head的下一个节点的信息,保证单链表不会因为失去head节点的原next节点而就此断裂 head.next = pre;//让当前节点指向前一个节点,因为要反序

java倒序输出List

先贴代码 package com.tsubasa.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; public class ReversibleArrayList<T> extends ArrayList<T>{ public ReversibleArrayList(Collection&l

字符串的倒序输出

package cn.itsource.homeworkday14; /** *  字符串的倒序输出: * 把字符串翻转过来输出 原字符串“avdkfasjks”输出效果”skjsafkdva”; */ //1.通过创建StringBuffer调用它的reverse()方法字符串倒序输出(比较简洁) public class Seven {public static void main(String[] args) { String str6 = "abcdefgh";    Stri

C#字符串的倒序输出

介绍 在本文中,我将演示如何将字符串的单词倒序输出.在这里我不是要将“John” 这样的字符串倒序为成“nhoJ”,.这是不一样的,因为它完全倒序了整个字符串.而以下代码将教你如何将“你 好 我是 缇娜”倒序输出为“缇娜 是 我 好 你”.所以,字符串的最后一个词成了第一个词,而第一个词成了最后一个词.当然你也可以说,以下代码是从最后一个到第一个段落字符串的读取. 对此我使用了两种方法.第一种方法仅仅采用拆分功能.根据空格拆分字符串,然后将拆分结果存放在一个string类型的数组里面,将数组倒序

用C/C++实现倒序输出,以12345为例

 用C/C++语言实现倒序输出12345,代码如下 #include <stdio.h>int main(){ int i=12345; int b; for(;i>=1;i=i/10) {  b=i%10;  printf("%d",b); } return 0;}

C语言之基本算法40—字符串删除元音字母倒序输出

//字符串,数组 /* ================================================================== 题目: 输入一行字符,将辅音字母按反序输出(去掉元音字母),并存放在另一字符串! ================================================================== */ #include<stdio.h> #include<string.h> #define N 256 vo

Java实现字符串倒序输出的几种方法

1. 最容易想到的估计就是利用String类的toCharArray(),再倒序输出数组的方法了. import javax.swing.JOptionPane; public class ReverseString { public static void main (String args[]){ String originalString; String resultString = ""; originalString = JOptionPane.showInputDialog

升序或降序数组的倒序输出

其实数组倒序输出相对来说还是挺简单的,因为数组已经是有序的了,所以只要循环然后压入一个新数组即可. 也许你会这样写: function backSort (arr) { var finalArr = []; for (var i = arr.length - 1; i >= 0; i --) { finalArr.push(arr[i]); } return finalArr; } console.log(backSort([1,2,3,4,5])); 而没有对数组这种push操作的java,可