zoukankan      html  css  js  c++  java
  • 链表的实现(Java语言描述)

    代码如下:

    public interface ListInterface<T> {
    	public T getElem(int i);
    	public boolean insertElem(int i,T t);
    	public T deleteElem(int i);
    	
    
    }
    


     

    public class Node<T> {
    	public T data;
    	public Node<T> next;
    	public T getData(){
    		return data;
    	}
    	public void setData(T data){
    		this.data = data;
    	}
    	public Node<T> getNext(){
    		return next;
    	}
    	public void setNext(Node<T> next){
    		this.next = next;
    	}
    
    }
    


     

    import java.io.*;
    import java.util.*;
    
    public class Linklist<T> implements ListInterface<T> {
    	public Node<T> head;
    	public int length;
    	public Linklist(T[] at){//头插法建立单链表。
    		T t;
    		this.length = 11;
    		Node<T> p;
    		head = new Node<T>();
    		//head.next = null;
    		//Scanner scanner = new Scanner(System.in);
    		//T s = scanner.nextLine();
    		int i=0;
    		while(i<at.length){
    			t = at[i];
    			p = new Node<T>();
    			p.data = t;
    			p.next = head.next;
    			head.next = p;//头插法!
    			i++;
    		}
    	}
    	public Linklist(Node<T> head){
    		this.head = head;
    	}
    	public T getElem(int i){
    		int j = 0;
    		Node<T> n = head;
    		while(n != null){
    			if(j == i){
    				return n.getData();
    			}
    			n = n.getNext();
    			j++;
    		}
    		return null;
    	}
    	public boolean insertElem(int i,T t){
    		if(i<0 || i>length){
    			System.out.println("插入位置不合法!");
    			return false;
    		}else{
    			if(head==null && i==1){
    				head = new Node<T>();
    				head.setData(t);
    				length++;
    				return true;
    			}
    			else if(head!=null && i==1){
    				Node<T> tempNode = new Node<T>();
    				tempNode.setData(t);
    				tempNode.setNext(head);
    				head = tempNode;
    				length++;
    				return true;
    			}else{
    				Node<T> n = this.head;
    				int j = 1;
    				while(n!=null && j<i-1){
    					n = n.getNext();
    					j++;
    				}
    				Node<T> tempNode = new Node<T>();
    				tempNode.setData(t);
    				tempNode.setNext(n.getNext());
    				n.setNext(tempNode);
    				length++;
    			}
    			return true;
    			
    		}
    	}
    	public T deleteElem(int i){
    		if(head==null || i<1 || i>length){
    			System.out.println("删除位置不合法!");
    			return null;
    		}
    		T old;
    		if(head!=null && i==1){
    			old = head.getData();
    			head = head.getNext();
    		}else{
    			Node<T> n = this.head;
    			int j = 1;
    			while(n!=null && j<i-1){
    				n = n.getNext();
    				j++;
    			}
    			old = n.getNext().getData();
    			n.setNext(n.getNext().getNext());
    		}
    		length--;
    		return old;
    	}
    	public Node<T> getHead(){
    		return this.head;
    	}
    	public int getLength(){
    		return this.length;
    	}
    	public void setHead(Node<T> head){
    		this.head = head;
    	}
    	public void setLength(int length){
    		this.length = length;
    	}
    	public void display(){
    		Node<T> p;
    		int i = 0;
    		p = head.next;
    		while(p!=null){
    			System.out.print(p.data + " ");
    			p = p.next;
    		}
    	} 
    }
    


     

    import java.util.*;
    import java.io.*;
    
    public class LinkedlistTest {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		Integer[] arr = new Integer[10];
    		Scanner scan = new Scanner(System.in);
    		for(int i=0; i<10; i++){
    			arr[i] = scan.nextInt();
    		} 
    		Linklist<Integer> list = new Linklist<Integer>(arr);
    		list.display();
    		System.out.println();
    		System.out.println(list.getElem(5));
    		System.out.println(list.insertElem(5, 78));
    		list.display();
    		System.out.println();
    		System.out.println("要删除的元素是:"+list.deleteElem(5));
    		list.display();
    		
    		
            		
    
    	}
    
    }
    



     

  • 相关阅读:
    HYSBZ 3813 奇数国
    HYSBZ 4419 发微博
    HYSBZ 1079 着色方案
    HYSBZ 3506 排序机械臂
    HYSBZ 3224 Tyvj 1728 普通平衡树
    Unity 3D,地形属性
    nginx 的naginx 种包含include关键字
    Redis 出现NOAUTH Authentication required解决方案
    mysql 8.0出现 Public Key Retrieval is not allowed
    修改jar包里的源码时候需要注意的问题
  • 原文地址:https://www.cnblogs.com/wxisme/p/4363786.html
Copyright © 2011-2022 走看看