链表的基本操作 java_JAVA实现单链表的基本操作
复习单链表的实现,扎实基础,单链表的结构不在赘述,直接看代码,注释的很清楚
注意:在插入和删除操作时,需要判断是否越界,如何判断上界?想到了在修改.
public class linkList {
//定义一个节点类,存储数据和引用
class Node{
private int data;
private Node next=null;
public Node(int data) {
super();
this.data = data;
}
}
Node head=null;//链表头的引用初始化为空
//尾插
public void addNode(int a) {
Node newnode=new Node(a);//使用传入的参数实例化一个节点
if(head==null){
head=newnode;
return;
}
Node temp=head;//一个移动的指针(把头结点看做一个指向结点的指针)
while(temp.next!=null){//遍历单链表,直到遍历到最后一个则跳出循环。
temp=temp.next;//往后移一个结点,指向下一个结点。目的是找到最后一个结点
}
temp.next=newnode;//temp为最后一个结点或者是头结点,将其next指向新结点
}
//在index位置后面插入位置插入指定元素结点
public void insertnodebyindex(int index,int i){
//判断插入位置合法性(下界和上界,如何获得上界)
if(index<1){
System.out.println("不合法");
return;
}
int length=0;//记录遍历的位置
//创建包含要插入元素的结点
Node node=new Node(i);
//移动的指针
Node temp=head;
while(temp.next!=null){
//从第一个元素开始找
length++;
if(index==length){
//1.temp的后继结点改成为新插入结点的后继结点
node.next=temp.next;
//2.在把新插入的结点变成p的后继结点
temp.next=node;
return;
}
//没找到index时向后循环遍历链表
temp=temp.next;
}
}
//删除index后一个位置的结点
public void deleteNode(int index){
if(index<1){
System.out.println("不合法");
return;
}
Node temp=head;
int length=0;
while(temp.next!=null){
length++;
if(index==length){
//把temp的后继结点改成temp的后继结点的后继结点
//即让temp的指针域指向temp的后面的后面的元素
temp.next=temp.next.next;
return;
}
temp=temp.next;
}
}
//获取链表长度
public int size(){
int length=1;
Node temp=head;
while(temp.next!=null){
length++;
temp=temp.next;
}
return length;
}
//打印结点
public void printlist(){
Node temp=head;
while(temp!=null){
System.out.print(temp.data);
temp=temp.next;
}
}
public static void main(String[] args) {
linkList list=new linkList();
list.addNode(2);
list.addNode(3);
list.addNode(4);
list.addNode(5);
list.addNode(8);
list.addNode(0);
list.addNode(6);
list.printlist();
System.out.println("\t");
//Node insertnode=new Node(0);
//在3号元素后面插入
list.insertnodebyindex(3 ,9);
list.printlist();
System.out.println("\t");
//删除
list.deleteNode(3);
list.printlist();
System.out.println("\t");
System.out.println(list.size());
}
}
链表的基本操作 java_JAVA实现单链表的基本操作相关推荐
- 带头结点单链表 和 不带头结点单链表的区别
文章目录 不带头结点的操作 代码① 代码② 代码③ 代码④ 带头结点的操作 代码⑤ 下面的代码中,传递链表时,传的是头指针.如果是带头结点的链表,传递链表时,可以传头结点,具体可以看看 C语言实现-线 ...
- 链表c++语言 解析,C++ 单链表的基本操作(详解)
链表一直是面试的高频题,今天先总结一下单链表的使用,下节再总结双向链表的.本文主要有单链表的创建.插入.删除节点等. 1.概念 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数 ...
- 237删除链表中的节点(单链表基本操作)
1.题目描述 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 说明: 链表至少包含两个节点. 链表中所有节点的值都是唯一的. 给定的节点为非末尾节点并且一定 ...
- 单链表的基本操作,建立单链表,插入删除等
这里主要写了相关的单链表的一些基本操作,是关于代码的,有什么不对的可以跟我在评论区讨论呀 #include<iostream>using namespace std;//单链表typede ...
- 单链表的逆序java_java 实现单链表的逆序
package com.ckw.mianshi; /** * java 实现单链表的逆序 * @author Administrator * */ public class SingleLinkedR ...
- 单链表的基本操作_数据结构-单链表的基本操作
typedef int ElemType;typedef struct LNode *PtrToNode; struct LNode {ElemType Data;PtrToNode Next; }; ...
- 链表的基本操作 java_Java_实现单链表-基本操作
1 packageofficeCoding;2 3 importjava.util.ArrayList;4 importjava.util.Stack;5 6 /** 7 * 从尾到头遍历链表 输入一 ...
- 链表问题13——删除无序单链表中值重复出现的节点
题目 给定一个无序单链表的头节点head,删除其中值重复出现的节点. 原链表 删除后 1->2->3->3->4->2->4->1 1->2->3 ...
- 单链表-在带头结点的单链表L中删除一个最小值结点(四指针)
单链表的存储结构: typedef struct LinkList{int data;LinkList * next;} 分析: 要删除一个链表的最小值节点,首先想到的是肯定是要定义两个指针,但是 , ...
最新文章
- [洛谷2月月月赛]富金森林公园
- JZOJ 5405. 【NOIP2017提高A组模拟10.10】Permutation
- react native 包学不包会系列--认识react native
- linux远程监控毕业设计,毕业设计论文:基于嵌入式Linux远程监控系统的设计与实现.doc...
- hibernate一对一关系实现
- s:url多值传递的时候出现;amp
- Js的cookie和session
- (转)SDL1.2到2.0的迁移指南
- dell服务器运维,【产品鉴赏】戴尔DELL R710服务器
- OSPF高级特性 —— 路由聚合(汇总)
- Python爬虫——利用新浪微盘下载周杰伦的歌曲(共190首)
- FORECAST函数预算产品的使用寿命测试值
- js 打开指定的浏览器_如何实现一个谷歌浏览器插件
- 微信小程序自定义tabbar以及闪烁问题
- 微信小程序投诉页面与交互设计
- 【TCP/IP】IP:网际协议(寻址和路由)
- 弘辽科技:拼多多里有top是什么意思?如何提高排名?
- 重走c语言—摸鱼大学生的c语言基础笔记
- 如何利用Python在网上接单,兼职也能月薪过万
- [CPNet]-理想亲和图的生成以及作用——Blank