有序链表

原创 2012年03月29日 11:16:35
Java数据结构和算法中文第二版.pdf 代码
Link.java
package com.ch5.sortedlist;

public class Link {

	private long dData ;
	private Link next ;
	
	public Link(){
		
	}
	public Link(long dData){
		this.dData = dData ;
	}
	
	public long getdData() {
		return dData;
	}
	public void setdData(long dData) {
		this.dData = dData;
	}

	
	
	public Link getNext() {
		return next;
	}
	public void setNext(Link next) {
		this.next = next;
	}
	public void displayLink(){
		System.out.print(dData+ " ");
	}
}

SortedList.java
package com.ch5.sortedlist;

public class SortedList {

	private Link first ;
	
	public SortedList(){
		first = null ;
	}
	
	public boolean isEmpty(){
		return (first == null) ;
	}
	
	public void insert(long key){
		Link newLink = new Link(key) ;
		Link previous = null ;
		Link current = first ;
		
		while( (null != current) && current.getdData() < key ){
			previous = current ;
			current = current.getNext() ;
		}
		if (null == previous){
			first = newLink ;
		}else{
			previous.setNext(newLink) ;
		}
		newLink.setNext(current) ;
	}//end insert 
	
	//remove first
	public Link remove(){
		Link temp = first ;
		first = first.getNext() ;
		return temp ;
	}
	
	//remove  by key
	public Link remove(long key){
		//is empty ,return null ;
		if (isEmpty()){
			return null ;
		}
		Link current = first ;
		Link previous = null ;
		while(null != current && current.getdData() != key){
			previous = current ;
			current = current.getNext() ;
		}
		//is first 
		if (null == previous){
			first = first.getNext() ;
		}else if (null != current){//else not end 
			previous.setNext(current.getNext()) ;
		}
		return current ;
	}
	
	public void displayList(){
		System.out.print("List (first-->last):");
		Link current = first ;
		while (null != current){
			
			current.displayLink() ;
			current = current.getNext() ;
		}
		System.out.println(" ");
	}
}

SortedListApp.java
package com.ch5.sortedlist;

public class SortedListApp {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		SortedList theSortedList = new SortedList() ;
		theSortedList.insert(20) ;
		theSortedList.insert(50) ;
		theSortedList.insert(40) ;
		theSortedList.insert(35) ;
		theSortedList.insert(100) ;
		
		theSortedList.displayList() ;
		
		theSortedList.remove() ;
		
		theSortedList.displayList() ;
		
		theSortedList.insert(20) ;
		theSortedList.displayList() ;
		theSortedList.remove(40) ;
		theSortedList.displayList() ;
		
	}

}


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

两个有序链表求并

归并有序链表

  • 2011-12-13 11:57
  • 852KB
  • 下载

02-线性结构1 两个有序链表序列的合并 (15分)

02-线性结构1 两个有序链表序列的合并   (15分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。 函数接口定义: List Merge( Li...

合并两个有序链表

合并两个有序链表 有两张方法,一种遍历,一种递归 。 遍历:其实思路很简单,只要从比较二个链表的第一个节点,谁小就先取谁,取了后就在走到该链表的下一个节点。然后再进行比较,如果有链表走完,那直接将目...

有序链表的建立与归并

  • 2012-04-19 11:11
  • 273KB
  • 下载

俩个有序链表的合并

问题定义: 写一个函数SortedMerge函数,该函数有两个参数,都是递增的链表,函数的功能就是合并这两个递增的链表为一个递增的链表,SortedMerge的返回值是新的链表。新链...

Leetcode021--搜索有序链表的范围

找到排序数组中的目标元素的开始位置和结束位置的下标,也就是index

5-15 两个有序链表序列的合并

已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用-1−1表示序列的结尾(-1−1不属于这...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)