先定义节点:
package CareerCup;
public class Node
{
public Node next = null;
public int data = 0;
public Node(){}
public Node(int data)
{
this.data = data;
this.next = null;
}
public void setData(int data)
{
this.data = data;
}
}
再定义链表结构:
package CareerCup;
public class LinkedList
{
public Node header = null;
public Node tail = null;
public LinkedList(){}
public void add(int data)
{
if(header == null)
{
Node node = new Node(data);
header = node;
tail = node;
}
else
{
Node node = new Node(data);
tail.next = node;
tail = node;
}
}
public int getData(int index)
{
Node temp = header;
for(int i=0;i<index;i++)
temp = temp.next;
return temp.data;
}
public void deleteHead()
{
header = header.next;
}
public void deleteTail()
{
Node temp = header;
while(temp.next!=tail)
temp = temp.next;
tail = temp;
tail.next = null;
}
public void deleteData(int data)
{
if(header.data == data) header = header.next;
Node pre = header;
Node temp = pre.next;
while(temp.next!=null)
{
if(temp.data!=data)
{
pre = temp;
temp = temp.next;
}
else
{
pre.next = temp.next;
temp = temp.next;
}
}
if(tail.data==data)
{
temp.next = null;
tail = temp;
}
}
public void deleteIndex(int index)
{
Node pre = header;
Node temp = header;
for(int i=0;i<index;i++)
{
pre = temp;
temp = temp.next;
}
pre.next = temp.next;
}
public void print()
{
Node temp = this.header;
while(temp.next!=null)
{
System.out.print(temp.data+"->");
temp = temp.next;
}
System.out.print(tail.data);
System.out.println();
}
public void creatLoop(int[] data)
{
HashMap
posMap = new HashMap
();
for(int i=0;i<data.length;i++)
{
int item = data[i];
if(!posMap.containsKey(item))
{
this.add(item);
posMap.put(item, i);
}
else
{
int pos = posMap.get(item);
Node node = this.getNode(pos+1);
this.addNode(node);
}
}
}
}