线性链表 java实现「建议收藏」

线性链表 java实现「建议收藏」publicclassLinkList{ classNode{//定义Node节点 privateTdata; privateNodenext; publicNode(){} publicNode(Tdata,Nodenext){ this.data=data; this.next=next; } } privateNodehea

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

public class LinkList<T> {
	class Node{//定义Node节点
		private T data;
		private Node next;
		public Node(){}
		public Node(T data,Node next){
			this.data=data;
			this.next=next;
		}	
	}
	private Node header;//头指针
	private Node tail;//尾指针
	private int size;//线性表的长度
	public LinkList(){//构造空的线性链表
		this.header=null;
		this.tail=null;
		this.size=0;
	}
	public LinkList(T element){//构造一个节点的线性链表
		this.header=new Node(element,null);
		this.tail=this.header;
		this.size++;
	}
	public int length(){//返回线性链表的长度
		return size;
	}
	public void add(T element){//尾插法添加节点
		if(header==null){
			header=new Node(element,null);
			tail=header;
		}else{
			Node newNode=new Node(element,null);
			tail.next=newNode;
			tail=newNode;
		}
		size++;
	}
	public void addAtHeader(T element){//头插法尾链表添加新节点
		header=new Node(element,header);
		if(tail==null)
			tail=header;
		
		size++;
	}
	public Node getNodeByIndex(int index){//得到节点
		if(index<0||index>size-1){
			throw new IndexOutOfBoundsException("线性表索引越界");
		}
		Node current=header;
		for(int i=0;i<size && current!=null;current=current.next,i++){
			if(i==index)
				return current;
		}
		return null;
	}
	public int locate(T element){
		Node current=header;
		for(int i=0;i<size && current!=null;i++,current=current.next){
			if(current.data==element)
				return i;
		}		
		return -1;
	}
	public void insert(T element,int index){
		if(index<0||index>size-1){
			throw new IndexOutOfBoundsException("线性表索引越界");
		}else{
			if(index==0){
				addAtHeader(element);
			}else{
				Node prev=getNodeByIndex(index-1);
				prev.next=new Node(element,prev.next);
				size++;
			}
		}
	}
	public T delete(int index){//删除节点
		if(index<0||index>size-1){
			throw new IndexOutOfBoundsException("线性表索引越界");
		}
		Node del=null;
		if(index==0){
			del=header;
			header=header.next;
		}else{
			Node prev=getNodeByIndex(index-1);
			del=prev.next;
			prev.next=del.next;
			del.next=null;
		}
		size--;
		return del.data;	
	}
	public boolean empty(){//判断链表是否为空
		return size==0;
	}
	public void clear(){//清空链表
		header=null;
		tail=null;
		size=0;
	}
	public String toString(){
		if(empty()){
			return "[]";
		}else{
			StringBuilder sb=new StringBuilder("[");
			for(Node current=header;current!=null;current=current.next){
				sb.append(current.data.toString()+",");
			}
			int len=sb.length();
			return sb.delete(len-1,len).append("]").toString();
		}
	}
	public static void main(String []args){
		LinkList<String> list=new LinkList<String>();
		list.add("zhang san");
		list.add("li si");
		list.add("wang wu");
		list.add("zhang long");
		list.add("zhao hu");
		System.out.println("打印单链表"+list);
		System.out.println("li si"+"["+list.locate("li si")+"]");
		list.delete(4);
		System.out.println("删除元素后的单链表"+list);
	}
}

Jetbrains全家桶1年46,售后保障稳定


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:http://www.javaforall.cn/234681.html原文链接:http://www.javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mysql8和mariadb_mariadb迁移到mysql

    mysql8和mariadb_mariadb迁移到mysqlMariaDB为可替代MySQL的增强版本,但在已安装了MySQL的情况下同时也能安装MariaDB.(这是有意义的,例如你想从一个数据库/应用迁MariaDB为可替代MySQL的增强版本,但在已安装了MySQL的情况下同时也能安装MariaDB.(这是有意义的,例如你想从一个数据库/应用迁移到另一个数据库/应用中.)以下是在已安装MySQL的情况下,安装MariaDB的主要步骤.下载…

    2022年10月24日
  • nginx支持的负载均衡算法_nginx算法

    nginx支持的负载均衡算法_nginx算法1:Nginx负载均衡算法(1):轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。upstreamtomcat{server192.168.200.113:8080weight=1;server192.168.200.114:8080weight=1;}(2):Weight(轮询权值)Weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡…

    2022年10月10日
  • linux下chmod +x的意思?为什么要进行chmod +x

    linux下chmod +x的意思?为什么要进行chmod +x上周在工作中接触到chmod+x这个命令,如下图:首先对start.sh这个启动文件删除,然后使用rz命令上传了新的start.sh,然后发现还有进行下一步,chmod+xstart.sh这一步是什么意思呢?经过上网查询(说的比较复杂,引申太多)和咨询我们研发(还是研发说的通俗易懂)chmod+x的意思就是给执行权限LINUX下不同的文件类型有不同的颜色,这里…

  • Objective-C路成魔【11-多态性、动态类型和动态绑定】

    Objective-C路成魔【11-多态性、动态类型和动态绑定】

  • 小型电裁剪刀_手动裁剪

    小型电裁剪刀_手动裁剪由于简书经常打不开,或者打开慢,不靠谱,还是把文章迁移到CSDN吧。简书链接:https://www.jianshu.com/p/8c6508cab763有时候想对摄像头采集的视频流进行区域裁剪,可以使用libyuv这个库,原理就是先把NV12转换为i420,对i420做裁剪,然后再把i420转换为NV12,NV12再转换为CVPixelBufferRef,CVPixelBufferRef再转…

  • bzero 函数_readdir函数

    bzero 函数_readdir函数文章属属于转载:转载地址不详bzero  原型:    externvoid bzero(void*s,intn);头文件:    #include功能:置字节字符串s的前n个字节为零。    说明:bzero无返回值。

    2022年10月11日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号