数据结构_用JAVA实现单链表
一、先创建一个节点类
package com.vnv;
//数据结构与算法JAVA语言版-单向链表例子笔记
//定义链表节点
public class IntNode { public int info; // 记录信息
public IntNode next;// 指向下一节点的指针
public IntNode(int i) { // 创建一个节点并把它的info定义并且把它的下一个指 // 针指向null this(i, null); }
public IntNode(int i, IntNode n) { // 这是初使化的地点,this(i,null)就指它 info = i; next = n; } }
二、再创建下单链表类
package com.vnv;
public class IntSLList { private IntNode head, tail; // 定义指向头和尾的指针 注:此处的head和tail是IntNode类型的变量 //head 引用IntNode对象实例或持有IntNode对象实例的句柄
public IntSLList() { head = tail = null; // 定义一开始使head和tail都为空,定义一个空链表 }
public boolean isEmpty() { // 判断链表是否为空,这算法偶是佩服了! return head == null; }
public void addToHead(int el) { // 创建头指针,该方法只用一次! head = new IntNode(el, head); // 此时head的指为null进而初使化,我看为 // 了节约代码才这么写!要不也可以写成head=new IntNode(el); // 拥有了指向第一个元素的指针咯! if (tail == null) // 若只有一个元素的化那么其尾指针指向头指针 tail = head;// 第一次初使化的时候尾也有了!头也是它尾也是它! }
public void addToTail(int el) { // 添加尾指针,该方法使用多次 if (!isEmpty()) { // 若链表非空那么将尾指针的next初使化为一个新的元素 tail.next = new IntNode(el); // 然后将尾指针指向现在它自己的下一个元素 tail = tail.next; } else { // 如果为空则创建一个新的!并将头尾同时指向它! head = tail = new IntNode(el);// 这句可以有多种写法 } }
public int deleteFromHead() { // 删除头并且返回它的信息 int el = head.info; if (head == tail) { // 如果只有一个元素或没有元素则一律清空为空链表 head = tail = null; } else head = head.next; // 否则就把头指针后移 return el; }
public int deleteFromTail() { // 删除尾并返回它的info int el = tail.info; if (head == tail) // 和上面一样 head = tail = null; else { // 如果不是上面那种情况就把tail设置到原来tail的上一个元素 IntNode temp; // 这个是临时的 for (temp = head; temp.next != tail; temp = temp.next) // 这循环很特殊咯! tail = temp; // 循环的目的自己想 tail.next = null; // 把原来的尾设置为null } return el; // 返回 }
public void printAll() { // 输出所有的元素竟然没用Iterator强! for (IntNode temp = head; temp != null; temp = temp.next) System.out.println(temp.info + " "); }
public boolean isInList(int el) { // 判断链表内是否有元素的info与参数相等 IntNode temp; // 有个缺陷!只能判断出离head进的那一个!有多个就不行 for (temp = head; temp != null && temp.info != el; temp = temp.next) ;// 仔细理解 return temp != null; // 这个分号的作用 }
public void delete(int el) { // 通过el删除元素(有缺陷) if (!isEmpty()) // 若非空并且只有一个元素且头元素的info和el等 if (head == tail && head.info == el) // 那么就删除头 head = tail = null; else if (el == head.info) // 若非空并且el和头元素的info相等那么删除头 head = head.next; else { IntNode pred, temp; for (pred = head, temp = head.next; temp != null && temp.info != el; pred = pred.next, temp = temp.next) ;// 又是分号咯!判断其el是否在表内! if (temp != null) { // 若非空则删除元素 pred.next = temp.next; if (temp == tail) // 若为尾则删除尾 tail = pred; tail.next = null; } } } public static void main(String [] args){ IntSLList test=new IntSLList(); test.addToHead(3); test.addToTail(5); test.addToTail(7); test.addToTail(9); test.deleteFromHead(); test.delete(7); test.printAll(); } } |
相关推荐
通过Java实现单链表的操作,包括单链表定义、遍历、置空、判空、插入、删除、反转、中间结点、指定顺序排序、前插、后插、判断单链表是否存在环、环的长度、环的起始结点
数据结构中使用Java实现单链表的创建、读取等基本操作
单链表的冒泡排序,热烈欢迎大家的下载,谢谢谢谢
数据结构 单链表 java 图形界面实现
数据结构学习之循环单链表(基本操作实现) 数据结构学习之循环单链表(基本操作实现)
使用java语言编译数据结构的循环单链表,有三个类,分别是接口类,循环单链表的继承接口类的实现类,和循环单链表的测试类。
主要是讲解用java实现单链表的设计与相关分析,类容很详尽,对初学者应该很有帮助。
java数据结构之单链表知识
数据结构单链表求值的实验报告,很齐全,经过调试无误,交作业都没得问题。
JAVA数据结构——单链表的操作 单链表的操作 方法一: package ch02; (1)建立结点类Node.java public class Node { public Object data;//存放结点数据值 public Node next;//存放后继结点 //无参构造函数 public ...
文章代码实现了用Java编程语言来实现了数据结构中的单链表结构,提供了操作链表的基本方法以及排序方法
用Java语言实现的单链表,有增加节点、删除节点、查询节点和打印链表的功能,Java和数据结构初学者的必备程序!
使用java实现单链表,数据结构的基础知识........................................................................................
班级考勤管理系统程序代码+实现GUI界面设计+JAVA实现+数据结构(顺序表、单链表、插入排序算法)+程序要求+程序说明书。
数据结构中java版。。。对于单链表的倒置。。。
单链表 基于JAVA的数据结构之单链表操作合
数据结构(Java语言描述) 案例04 一元多项式的表示及运算.docx 学习资料 复习资料 教学资源
最近在学数据结构,讲完单链表后老师就布置了一个这样的答辩作业。代码附上啦,大多地方都添加了注释,要交作业的同学可以看一看。 实现要求: 1)两个一元稀疏多项式进行存储,并实现加法运算。 2)使用单链表的...
1. 实现单链表的定义和操作。该程序包括单链表结构类型以及对单链表 操作的具体的函数定义。 2. 程序中的单链表(带头结点)结点为结构类型,结点值为整型。 3. 本程序完成单链表的生成,任意位置的插入、删除,...
作业系统单链表实现+JAVA实现+排序+打印输出+数据结构+程序要求+程序实现说明书