数据结构之链表—Java语言描述
- 定义了一个结点类和一个链表类
- 链表类包含了对链表的基本操作:包括链表的初始化,链表的创建(尾插法),链表的销毁,删除链表首元结点,删除链表尾结点,链表元素的插入,打印链表
package test;
import java.util.*;
class Node{
protected int data;
protected Node next;
}
class LinkedList{
protected Node node;
protected int length=0;
public void initList(){
node=new Node();
}
public void createList(){
Scanner in=new Scanner(System.in);
System.out.print("请输入创建结点数量:");
int n=in.nextInt();
length=n;
System.out.print("请输入链表内容:");
Node p=node;
for (int i=0;i<n;i++){
Node temp=new Node();
temp.data=in.nextInt();
p.next=temp;
p=temp;
}
}
public void destroyList(){
node.next=null;
length=0;
}
public void deleteHead(){
node.next=node.next.next;
length--;
}
public void deleteTail(){
Node p=node;
while (p.next.next!=null){
p=p.next;
}
p.next=null;
length--;
}
public void insertNode(){
Scanner in=new Scanner(System.in);
System.out.print("请输入插入的位置:");
int location=in.nextInt();
if(location>this.length+1)
System.out.println("该位置无法插入!");
else {
Node p=node;
for(int i=0;i<location-1;i++){
p=p.next;
}
System.out.print("请输入结点信息:");
Node temp=new Node();
temp.data=in.nextInt();
temp.next=p.next;
p.next=temp;
this.printList();
length++;
}
}
public void printList(){
Node p=node;
if(p.next==null)
System.out.println("链表为空!");
while (p.next != null) {
System.out.print(p.next.data + " ");
p = p.next;
}
System.out.println();
}
}
public class Ts {
public static void main(String[] args) {
LinkedList l= new LinkedList();
l.initList();
l.createList();
System.out.print("创建链表后:");
l.printList();
l.deleteHead();
System.out.print("删除头节点后:");
l.printList();
l.deleteTail();
System.out.print("删除尾节点后:");
l.printList();
l.insertNode();
l.destroyList();
System.out.print("销毁链表后:");
l.printList();
}
}