package list;
public class LinkList {
private Node head;
//声明节点
public class Node{
private int data;
private Node next;
public Node(){
}
public Node(int data){
this.data = data;
}
}
//打印列表
public void print(){
Node p = head;
while(p.next!=null){
System.out.print(p.next.data+",");
p=p.next;
}
System.out.println(" ");
}
//传一个数组进来来创建链表
public LinkList(int[]a){
head = new Node();
Node p = head;
int i =0;
while(i<a.length){
Node temp = new Node(a[i]);
p.next = temp;
p = p.next;
i++;
}
print();
}
//删除
public void delete(int index){
Node p = head.next;
int i =0;
while(i<index) p=p.next;
}
//插入元素
public void insert(int value,int index){
int i=0;
Node p = head;
while(i<index){
p=p.next;
i++;
}
Node temp = new Node(value);
temp.next=p.next;
p.next=temp;
print();
}
//查找元素
public int get(int index){
int i=0;
Node p = head.next;
while(i<index){
i++;
p=p.next;
}
System.out.println(p.data);
return p.data;
}
//排序,使用选择排序
public void sort(){
if (head==null || head.next==null){
return ;
}else {
System.out.println("执行排序");
Node newHead = new Node();
Node pn = newHead;
while(head.next!=null){
//表示最小值所在的节点
Node min = head.next;
//表示最小值所在的节点的前一个节点
Node pre = head;
Node p = head.next;
//找到最小值节点
while(p.next!=null){
if(min.data<p.next.data){
pre = p;
min = p.next;
}
p=p.next;
}
//将min提取出来
pre.next = min.next;
pn.next = min;
pn = pn.next;
}
head=newHead;
}
print();
}
public void caoncat(LinkList a){
Node p = head;
while(p.next!=null) p = p.next;
p.next=a.head.next;
print();
}
public static void main(String [] args){
int a[] = {8,7,6,5,4,3,2,1};
int b[] = {9,10,11,12,13};
//使用数组初始化一个链表
LinkList list = new LinkList(a);
LinkList lb = new LinkList(b);
//插入元素
list.insert(12,3);
list.get(0);
list.caoncat(lb);
list.sort();
}
}