单链表的主要操作包括链表的创建,元素的添加、插入和删除,其用Java语言实现的代码如下:
public class singleList<T> {
private Node<T> head;//头结点
private int size = 0;//链表长度
class Node<T> {
private T elem;//数据域
Node<T> next;//指针域
Node() {}
Node(T elem) {
this.elem = elem;
}
void addNode(Node<T> newNode) {
next = newNode;
}
}
public int size() {
return size;
}
public singleList() {
this.head = new Node<T>();
}
//添加
public T add(T elem) {
if(size == 0) {
head.elem = elem;
}else {
Node<T> newNode = new Node<T>(elem);
Node<T> last = getNode(size-1);
last.addNode(newNode);
}
size++;
return head.elem;
}
//获取索引的结点
private Node<T> getNode(int index) {
if(index > size||index <0) {
throw new RuntimeException("索引错误:"+index);
}
Node<T> now = new Node<T> ();
now = head;
int count = 0;
while(count!=index) {
now = now.next;
count++;
}
return now;
}
//获取索引下的数据
public T get(int index) {
if(index > size||index <0) {
throw new RuntimeException("索引错误:"+index);
}
Node<T> now = new Node<T>();
now = head;
int count = 0;
while(count!=index) {
now = now.next;
count++;
}
T elem = now.elem;
return elem;
}
//插入数据
public T insert(int index, T elem)
{
Node<T> newNode = new Node<T>(elem);
Node<T> insertNode = getNode(index);
newNode.next = insertNode.next;
insertNode.next = newNode;
size++;
return head.elem;
}
//删除数据
public T delete(int index)
{
Node<T> deleteNode = getNode(index);
Node<T> prevNode = getNode(index-1);
prevNode.next = deleteNode.next;
deleteNode.next = null;
return head.elem;
}
//显示链表
public void display() {
System.out.print("链表:");
Node<T> node = head;
while (node != null)
{
System.out.print(node.elem + " ");
node = node.next;
}
}
public static void main(String[] args) {
singleList<Integer> list = new singleList<Integer>();
for (int i = 1; i < 10; i++)
list.add(i*2);
list.display();
list.add(66);
System.out.println("");
System.out.print("添加数字66后的");
list.display();
System.out.println("");
list.insert(3,59);
System.out.print("在索引3处插入59后的");
list.display();
System.out.println("");
list.delete(9);
System.out.print("删除索引9项后的");
list.display();
}
}
运行结果如下:
注意: 如果因为中文注释编译不过去,则可以使用eclipse编译,或者按照如下格式编译:
javac -encoding utf-8 singleList.java