关闭

Android0828(三)

66人阅读 评论(0) 收藏 举报
分类:

接(二)http://blog.csdn.net/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)









0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:84086次
    • 积分:2667
    • 等级:
    • 排名:第13617名
    • 原创:173篇
    • 转载:112篇
    • 译文:1篇
    • 评论:14条
    欢迎访问我的个人博客
    https://moluchase.github.io/
    最新评论