Java 实现一个链表
2024-08-29 20:30:57
public class MyList {
static class Node {// 节点类
Object data;
Node next;
public Node(Object data) {// 构造方法,为data赋值
this.data = data;
this.next = null;
}
}
Node head;
public MyList() {
head = null;// 链表的构造方法
}
public void clear() {// 清除链表
head = null;
}
public void bianli()// 遍历
{
Node p = head;
while (p != null) {
System.out.print(p.data + " ");
p = p.next;
}
System.out.println();
}
public boolean isEmpty()// 推断是否为空
{
return head == null;
}
public int size() {// 节点个数
Node p = head;
int sum = 0;
while (p != null) {
sum++;
p = p.next;
}
return sum;
}
// 在指定位置插入元素。下标从0開始
public void insert(Object d, int pos) {
if (pos < 0 || pos > size()) {
throw new RuntimeException("下标错误");
}
Node newNode = new Node(d);
if (pos == 0) {
newNode.next = head;
head = newNode;
} else if (pos >= size() - 1) {
get(size() - 1).next = newNode;
} else {
newNode.next = get(pos);
get(pos - 1).next = newNode;
}
}
public Node get(int pos) {
if (pos < 0 || pos > size()) {
throw new RuntimeException("下标错误");
}
if (pos == 0)
return head;
Node p = head;
for (int i = 0; i < pos; i++)
p = p.next;
return p;
}
public static void main(String[] args) {
MyList list = new MyList();
list.insert(10, 0);
list.insert(20, 1);
list.insert(30, 0);
list.insert(40, 1);
System.out.println(list.size());
list.bianli();
System.out.println(list.isEmpty());
System.out.println(list.get(2).data);
list.clear();
System.out.println(list.isEmpty());
}
}
最新文章
- 电路相关知识--读<;<;继电器是如何成为CPU的>;>;
- 最简实例说明wait、notify、notifyAll的使用方法
- junit单元测试中私有方法测试
- POJ 3525 半平面交+二分
- 如何在oracle中导入dmp数据库文件
- 实现Linux select IO复用C/S服务器代码
- Android开发心得(转)
- microchip PIC芯片使用方法
- C# 面向对象 , 类与对象
- PPT 制作必备工具
- UVALive 5102 Fermat Point in Quadrangle 极角排序+找距离二维坐标4个点近期的点
- 关于PCA算法的一点学习总结
- .Net Webapi Swagger增加登录功能
- SDN网络虚拟化中有效协调的映射算法
- java中的编译时常量与运行时常量
- Burp Suite Intruder中爆破模式介绍
- flume初识
- java生成zip压缩文件,解压缩文件
- String 字符串中含有 Unicode 编码时,转为UTF-8
- 薛兆丰吴军何帆曾鸣万维刚李笑来罗永浩等得到APP专栏作者的书23本