几种基本的数据结构(待修改)

链表

一,单链表

在链表中维护对头部节点的引用,增删头部的时间复杂度为O(1),增删查其他位置时间复杂度为O(n),需要从头部依次做比较,直到找到对应元素,但是比数组的O(n)要快,因为只比较不复制,数组需要复制

单链表可以实现栈功能,后进先出,进则insertfirst,出则deletefirst

二,双端链表

在链表中维护对头部和尾部节点的引用,增删头部和增加尾部的时间复杂度为O(1),但是无法实现删除尾部,因为没有倒数第二个对象的引用

双端链表可以实现队列功能,先进先出,进则insertlast,出则deletefirst

三,有序链表

插入元素时需遍历链表找到插入位置,因此增删某个元素时间复杂度为O(n),但是增删最小元素的复杂度为O(1),因此适合实现优先级队列,因为优先级队列往往频繁存取最小值即优先级最高的元素,还可以对数组进行排序

package fulan.data;
import java.util.Arrays;
import java.util.SortedSet;
import java.util.TreeSet;

/**   
*    
* 项目名称:TestStringUtils   
* 类名称:SortListDemo   
* 类描述:   使用sortedset对数组进行排序
* 创建人:xuanwugang   
* 创建时间:2018年3月26日 下午11:29:42   
* 修改人:xuanwugang   
* 修改时间:2018年3月26日 下午11:29:42   
* 修改备注:   
* @version    
*    
*/
public class SortListDemo {

	public static void main(String[] args) {
		//创建一个sortedset
		SortedSet<Integer> st = new TreeSet<Integer>();
		int[] myArray={2,2,5,1,4,3};
		//将数组中元素依次放入sortedset中,自动拍好顺序
		for(int i = 0;i<myArray.length;i++){
			st.add(myArray[i]);
		}
		//将set转化为数组
		Integer[] newArray = st.toArray(new Integer[0]);
		System.out.println(Arrays.toString(newArray));
	}
}

四,双向链表

猜你喜欢

转载自blog.csdn.net/xuanwugang/article/details/79705722