本文共 2725 字,大约阅读时间需要 9 分钟。
首先,我们定义了一条长度为80的链表,该链表的元素编号从1到80。接下来,我们实现了链表的增、删、清空功能。以下是各操作的实现细节:
插入算法:
删除算法:
查找算法:
下面是实现代码:
public interface ListIntf { public int size(); // 获取链表长度 public void clear(); // 清空链表 public boolean isEmpty(); // 判断是否为空表 public Object get(int i); // 获取i位置的元素 public int indexOf(Object obj); // 获取元素的索引位置 public Object getPre(Object obj); // 获取前驱元素 public Object getNext(Object obj); // 获取后驱元素 public void insertElementAt(Object obj, int i); // 插入元素 public Object remove(int i); // 移除元素 public Object remove(Object obj); // 移除元素} 实现上述接口的具体类为Sqlist:
public class Sqlist implements ListIntf { final int maxlen = 100; int len = 80; int num[] = new int[maxlen]; public Sqlist() { for (int i = 0; i < len; i++) { num[i] = 0; } } public int size() { return len; } public void clear() { for (int i = 0; i < num.length; i++) { num[i] = 0; } } public boolean isEmpty() { int index = this.indexOf(null); return index == -1; } public Object get(int i) { return num[i - 1]; } public int indexOf(Object obj) { for (int i = 0; i < num.length; i++) { if (obj.equals(num[i])) { return i; } } return -1; } public Object getPre(Object obj) { int index = this.indexOf(obj); if (index == 0) { return null; } else { return num[index - 1]; } } public Object getNext(Object obj) { int index = this.indexOf(obj); if (index == num.length - 1) { return null; } else { return num[index + 1]; } } public void insertElementAt(Object obj, int i) { if (i < 1 || i > len) { System.out.println("插入位置不对"); } else { for (int j = len; j > i; j--) { num[j + 1] = num[j]; } num[i] = (int) obj; len++; } } public Object remove(int i) { if (i < 1 || i > len) { System.out.println("删除位置不对"); return null; } else { for (int j = i - 1; j >= 0; j--) { num[j] = num[j + 1]; } num[i - 1] = 0; len--; return num[i]; } }} 运行结果示例:
转载地址:http://uhwcz.baihongyu.com/