Android0828(三)

接(二)http://blog.youkuaiyun.com/molu_chase/article/details/52356346

2.倒置一个链表

下面的ConvertList()实现的是倒置一个链表,用的是递归的方法,直到走到链表为空,返回该节点,并执行调用函数后的代码,将返回的节点的next节点设为当前的节点。

节点属性:


	private int id;
	private String name;
	private String sex;
	private ClassStruct next;

创建与倒置函数

public class AndroidTest {

	//创建一个ClassStruct类的链表
	public static void main(String[] args) {
		int i=1;
		ClassStruct struct=new ClassStruct();
		struct.setId(0);
		ClassStruct struct2=null;
		ClassStruct struct3=struct;
		while(i<10){
			struct2=new ClassStruct();
			struct2.setId(i);
			struct.setNext(struct2);
			struct=struct2;
			i++;
		}
		struct2.setName(null);
		//传入链表头
		ConvertList(struct3);
	}
	//用递归实现的倒置链表
	public static ClassStruct ConvertList(ClassStruct struct){
		ClassStruct struct2;
		if(struct.getNext()==null){
			System.out.println(struct.getId());
			return struct;
		}
		struct2=ConvertList(struct.getNext());
		struct2.setNext(struct);
	//	System.out.println(struct.getId());
		return struct;
	}
}

3.链表和数组的区别,查找某个元素和插入某个元素的时间空间复杂度

链表可以任意动态添加,而数组是固定的空间大小;数组中的插入和删除会涉及到大部分的元素,而链表只用前后两个元素的改变;链表比较占空间,而数组占空间小。

关于空间复杂度,我觉得都没有消耗,应该是O(1)

查找的时间复杂度都是O(n)

插入的话,数组的时间复杂度是O(n);而对于链表,如果是指定序号的,则为O(1),如果是相对位置的话,是O(n)









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值