对于一个单链表来说,要求有最基本的数据节点以及一些重要的方法。

方法应该有增删改查、定位、输出、获取链表长度、排序、链表读入、链表输出。下面是我用java写的单链表

public class List {

    public class Node{//定义节点
public int data;
public Node next;
public Node(int data){
this.data = data;
}
} private Node head;//头节点 public Node getHead(){
return head;
} public int getLength()//得到链表长度
{
Node node = head;
int k = 0;
while(node != null){
k++;
node = node.next;
}
return k;
} public Node Locate(int index){//定位位于第index位置的节点
if(index <= 0)return null;
Node node = head;
int k = 1;
while(node != null && k < index){
k++;
node = node.next;
}
return node;
} public void input(int n){//链表输入
if(n <= 0)return;
Scanner reader = new Scanner(System.in);
int value = reader.nextInt(); head = new Node(value);
Node node = head;
int k = 1;
while(k < n){
k++;
value = reader.nextInt();
node.next = new Node(value);
node = node.next;
}
} public void print(){//链表输出
Node node = head;
while(node != null){
System.out.print(node.data + " ");
node = node.next;
}
} public void insert(int index, Node node){//链表插入
if(index <= 0 || index > getLength())return;
Node cur = Locate(index);
node.next = cur.next;
cur.next = node;
} public void delete(int index){//删除节点
if(index <= 0 || index > getLength())return;
Node node = Locate(index - 1); Node del = node.next;
node.next = del.next;
} public void setData(int index, int data){//修改节点数据
if(index <= 0 || index > getLength())return;
Node node = Locate(index);
node.data = data;
} public int getData(int index){//得到节点数据
if(index <= 0 || index > getLength())return -1;
Node node = Locate(index);
return node.data;
} public void sort(){//用冒泡排序对链表进行排序
Node cur = head;
Node tmp = null;
while(cur != tmp){
while(cur.next != tmp){
if(cur.data > cur.next.data){
int temp = cur.data;
cur.data = cur.next.data;
cur.next.data = temp;
}
cur = cur.next;
}
tmp = cur;
cur = head;
}
}
}

测试代码如下:

public static void main(String[] args) {
List L = new List();
System.out.println("请输入链表中的数据");
L.input(6); System.out.println("链表的长度为:" + L.getLength());
System.out.println("排序后的链表为");
L.sort();
L.print(); L.setData(4, 1000);
System.out.println("把第4个数据修改为1000, 修改后如下");
L.print(); System.out.println("链表中第3个数据为: " + L.getData(3)); L.delete(2);
System.out.println("删除链表中的第2个数据后,结果如下");
L.print(); }

运行结果如下:

用java实现单链表的更多相关文章

  1. Java实现单链表的各种操作

    Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素   4.实现链表的反转   5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...

  2. java实现单链表的增删功能

    JAVA 实现单链表的增删功能 package linked; class LinkedTable{ } public class LinkedTableTest { public static vo ...

  3. JAVA数据结构——单链表

    链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ...

  4. 使用java实现单链表(转载自:https://www.cnblogs.com/zhongyimeng/p/9945332.html)

    使用java实现单链表----(java中的引用就是指针)转载自:https://www.cnblogs.com/zhongyimeng/p/9945332.html ? 1 2 3 4 5 6 7 ...

  5. 用Java实现单链表的基本操作

    笔试题中经常遇到单链表的考题,下面用java总结一下单链表的基本操作,包括添加删除节点,以及链表转置. package mars; //单链表添加,删除节点 public class ListNode ...

  6. java实现单链表常见操作

    一.概述: 本文主要总结单链表常见操作的实现,包括链表结点添加.删除:链表正向遍历和反向遍历.链表排序.判断链表是否有环.是否相交.获取某一结点等. 二.概念: 链表: 一种重要的数据结构,HashM ...

  7. Java实现单链表的快速排序和归并排序

    本文描述了LeetCode 148题 sort-list 的解法. 题目描述如下: Sort a linked list in O(n log n) time using constant space ...

  8. 数据结构——Java实现单链表

    一.分析 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点由元素和指针构成.在Java中,我们可以将单链表定义成一个类,单链表的基 ...

  9. Java实现单链表翻转

    单链表翻转比方有例如以下链表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ3NoaXp0eQ==/font/5a6L5L2T/fontsize ...

随机推荐

  1. 第三课补充01——set类型 sorted类型命令操作详解,redis管道及事务

    1. set类型的命令操作: (1)sadd命令:向key指定的set集合添加成员 ##sadd命令:是设置set集合类型的数据,sadd  <key> <mumber> [& ...

  2. mysql delete 多表

    DELETE u.*,acu.*,alu.* FROM user u, accountuser acu ,algouser alu WHERE u.userId=11 and acu.userID=1 ...

  3. 区块链 block chain 去信任

    去中心化:不以参与交易的任何一方为中心 去信任:假定参与交易的任何一方都是不可信任的 区块链受到关注的原因 去中心化.去信任化.智能合约等,正好满足未来互联网持续发展所要求的信息的盖度自动化和高度程序 ...

  4. soft deletion Google SRE 保障数据完整性的手段

    w http://www.infoq.com/cn/articles/GoogleSRE-BookChapter26 Google SRE 保障数据完整性的手段 就像我们假设Google 的底层系统经 ...

  5. python 三行代码实现快速排序

    python 三行代码实现快速排序 最近在看 python cookbook , 里面的例子很精彩,这里就帮过来,做个备忘录 主要利用了行数的递归调用和Python的切片特性,解释一下每行代码的含义: ...

  6. ES6通过WeakMap解决内存泄漏问题

    一.Map 1.定义 Map对象保存键值对,类似于数据结构字典:与传统上的对象只能用字符串当键不同,Map对象可以使用任意值当键. 2.语法 new Map([iterable]) 属性 size:返 ...

  7. 转!!java泛型

    介绍java泛型的一篇文章,通俗易懂! 原文地址:http://www.cnblogs.com/lwbqqyumidi/p/3837629.html 一. 泛型概念的提出(为什么需要泛型)? 首先,我 ...

  8. python用whl文件安装包

    直接用pip安装包的时候有时会因为许多奇怪的原因安装失败,这时就需要祭出大杀器——whl文件 python3 -m pip install whl文件路径名 whl库:https://www.lfd. ...

  9. linkText()的用法

    1.linkText()常用于定位链接,以谷歌的gmail为例: WebElement gmailLink = driver.findElement(By.linkText("Gmail&q ...

  10. JIRA 模块 bug管理工具

    from jira import JIRA #导入jira jira=JIRA(server='http://127.0.0.1:8080', basic_auth=('name', 'passwor ...