链表(单链表的四个基本操作实现)


前言

链表是一种简单的数据结构,是非顺序,非连续的存储结构。数据元素的连接通常通过结点中的指针来实现


一、链表是什么?

链表是一种简单的数据结构,是非顺序,非连续的存储结构。数据元素的连接通常通过结点中的指针来实现,链表中的结点往往包括数据域和指针域

二、单链表的创建

1.如何创建一个链表结点

代码如下(示例):

/**
*声明一个类,包含Data(数据域),next(指针域):指向下一个结点
*/
class  Node{
	public  int data;
	public  Node next;
	//声明构造器
	public Node(int data){
	this.data=data;
	}
	public Node(){
	}
	@Override
	public String toString(){
	return  "["+"data="+data+"next====>" +next;
	}	
}

2.如何在链表中实现元素增删查改

代码如下(示例):

/**
*	先创建一个链表类
*
*/

class NodeList{
//创建头结点
Node head=new Node("0");

}

实现查看此链表的操作

public void showList(){
//创建中间变量用来遍历链表
	//先判断链表是否为空
	if(head.next==null){
		System.out.println("链表为空");
	}
//注意:因为头结点为空,所以从下一个结点开始遍历
Node temp=head.next;
while(true){
if(temp==null)
	break;
	}
	else{
	System.out.println(temp);
	temp=temp.next;
	}

}
}

实现增加元素结点操作

public void add(int n){
	//创建一个新结点
	Node n=new Node(n);
	//创建一个结点用来遍历链表,找到链表的尾部
	//这个结点从链表的头部开始遍历
	Node temp=head;
	//进行循环直到找到尾结点:判断尾结点就是指针域为Null
	while(true){
			//当遍历结点遍历到尾部以后,跳出循环,进行添加结点的操作
			if(temp.next==null){
			//注意:此处必须为为temp.next==null时跳出循环,
			//因为如果时Temp==null时,此时会没有结点指向temp,无法将其链接
			break;
			}
			temp=temp.next;
		}
		//将新节点位置赋值给temp
		temp.next=n;
		n.next=null;
	}

实现删除结点的操作

public void delete(int n){
	//先判断链表是否为空
	if(head.next==null){
		System.out.println("链表为空");
	}
	//创建中间变量用于遍历链表
	Node temp=head;
	//用于确认是否找到含有n的结点
	boolean flag=false;
	//注意:单链表进行删除结点的售后需要借助上一个结点进行删除
	//当我们学习到了双链表结构的时候可以实现自我删除
	while(true){
		if(temp.next==null){
			break;}
		if(temp.next.n==n){
			//当找到了含有N的结点则修改状态值,并且跳出循环
			false=true;
			break;
			}else
			temp=temp.next;
		}
		//进行删除操作
		if(flag){
		temp.next=temp.next.next;
		}else{
		System.out.println("链表中没有此元素");}
}

实现修改结点的操作

public void update(int n){
//先判断链表是否为空
	if(head.next==null){
		System.out.println("链表为空");
	}
//进行修改操作时我们应该遍历链表找到需要修改的结点,然后进行修改
//遍历链表
Node temp=head;
boolean flag=false;
while(true){
		if(temp.next==null){
		break;
		}
		if(temp.next.n==n){
		flag=true;
		break;
			}
		}
	if(flag){
		temp.next.n=n;
		}else
			System.out.println("链表中没有这个结点");
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值