复习单链表的实现,扎实基础,单链表的结构不在赘述,直接看代码,注释的很清楚

注意:在插入和删除操作时,需要判断是否越界,如何判断上界?想到了在修改.

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实现单链表的基本操作相关推荐

  1. 带头结点单链表 和 不带头结点单链表的区别

    文章目录 不带头结点的操作 代码① 代码② 代码③ 代码④ 带头结点的操作 代码⑤ 下面的代码中,传递链表时,传的是头指针.如果是带头结点的链表,传递链表时,可以传头结点,具体可以看看 C语言实现-线 ...

  2. 链表c++语言 解析,C++ 单链表的基本操作(详解)

    链表一直是面试的高频题,今天先总结一下单链表的使用,下节再总结双向链表的.本文主要有单链表的创建.插入.删除节点等. 1.概念 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数 ...

  3. 237删除链表中的节点(单链表基本操作)

    1.题目描述 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 说明: 链表至少包含两个节点. 链表中所有节点的值都是唯一的. 给定的节点为非末尾节点并且一定 ...

  4. 单链表的基本操作,建立单链表,插入删除等

    这里主要写了相关的单链表的一些基本操作,是关于代码的,有什么不对的可以跟我在评论区讨论呀 #include<iostream>using namespace std;//单链表typede ...

  5. 单链表的逆序java_java 实现单链表的逆序

    package com.ckw.mianshi; /** * java 实现单链表的逆序 * @author Administrator * */ public class SingleLinkedR ...

  6. 单链表的基本操作_数据结构-单链表的基本操作

    typedef int ElemType;typedef struct LNode *PtrToNode; struct LNode {ElemType Data;PtrToNode Next; }; ...

  7. 链表的基本操作 java_Java_实现单链表-基本操作

    1 packageofficeCoding;2 3 importjava.util.ArrayList;4 importjava.util.Stack;5 6 /** 7 * 从尾到头遍历链表 输入一 ...

  8. 链表问题13——删除无序单链表中值重复出现的节点

    题目 给定一个无序单链表的头节点head,删除其中值重复出现的节点. 原链表 删除后 1->2->3->3->4->2->4->1 1->2->3 ...

  9. 单链表-在带头结点的单链表L中删除一个最小值结点(四指针)

    单链表的存储结构: typedef struct LinkList{int data;LinkList * next;} 分析: 要删除一个链表的最小值节点,首先想到的是肯定是要定义两个指针,但是 , ...

最新文章

  1. [洛谷2月月月赛]富金森林公园
  2. JZOJ 5405. 【NOIP2017提高A组模拟10.10】Permutation
  3. react native 包学不包会系列--认识react native
  4. linux远程监控毕业设计,毕业设计论文:基于嵌入式Linux远程监控系统的设计与实现.doc...
  5. hibernate一对一关系实现
  6. s:url多值传递的时候出现;amp
  7. Js的cookie和session
  8. (转)SDL1.2到2.0的迁移指南
  9. dell服务器运维,【产品鉴赏】戴尔DELL R710服务器
  10. OSPF高级特性 —— 路由聚合(汇总)
  11. Python爬虫——利用新浪微盘下载周杰伦的歌曲(共190首)
  12. FORECAST函数预算产品的使用寿命测试值
  13. js 打开指定的浏览器_如何实现一个谷歌浏览器插件
  14. 微信小程序自定义tabbar以及闪烁问题
  15. 微信小程序投诉页面与交互设计
  16. 【TCP/IP】IP:网际协议(寻址和路由)
  17. 弘辽科技:拼多多里有top是什么意思?如何提高排名?
  18. 重走c语言—摸鱼大学生的c语言基础笔记
  19. 如何利用Python在网上接单,兼职也能月薪过万
  20. [CPNet]-理想亲和图的生成以及作用——Blank

热门文章

  1. UML精粹--标准对象建模语言简明教程
  2. Office远程代码执行漏洞补丁(905413)
  3. SpringBatch批处理框架入门(二)
  4. k8s kubebuilder系列开发 — 理解和剖析 Kubebuilder
  5. vue elementUI表单输入时触发事件@input
  6. go gin框架:StaticFS搭建文件服务器(可以加载文件夹及文件)
  7. springboot2.3.4集成EhCache缓存框架完整代码
  8. scala 的39个关键字
  9. Java经典逻辑编程题(不死神兔问题)
  10. ThreadPoolExecutor的七个参数详解