java数据结构----链表的实现
这里不讲解具体的原理,只讲代码的实现。
首先定义链表的节点:
public class Node {
private int data;
private Node next;
public Node(int data)
{
this.data=data;
}
public void setData(int data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public int getData() {
return data;
}
public void display()
{
System.out.print(data+" ");
}
}
初始化链表
private Node first;
public LinkList()
{
first=new Node(0);
first.setNext(null);
}
向链表中插入结点
public void insert(int data)
{
Node node=new Node(data);
if(first.getNext()==null)
{
first.setNext(node);
}else {
node.setNext(first.getNext());
first.setNext(node);
}
}
删除结点
public Node delete(int data)
{
Node current=first;
Node node=null;
while(current.getNext()!=null)
{
if(current.getNext().getData()==data)
{
node=current.getNext();
current.setNext(current.getNext().getNext());
return node;
}else
{
current=current.getNext();
}
}
return null;
}
查找结点
public Node peek(int data)
{
Node current=first.getNext();
while(current.getNext()!=null)
{
if(current.getNext().getData()==data)
{
return current.getNext();
}else
{
current=current.getNext();
}
}
return null;
}
打印链表的所有结点
public void display()
{
Node current=first.getNext();
while(current!=null)
{
current.display();
current=current.getNext();
}
System.out.println();
}
删除链表中第一个结点
public Node deleteFirst()
{
Node node=first.getNext();
first.setNext(node.getNext());
return node;
}
链表的完整代码:
public class Node {
private int data;
private Node next;
public Node(int data)
{
this.data=data;
}
public void setData(int data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public int getData() {
return data;
}
public void display()
{
System.out.print(data+" ");
}
}
public class LinkList {
private Node first;
public LinkList()
{
first=new Node(0);
first.setNext(null);
}
/**
*
*/
public void insert(int data)
{
Node node=new Node(data);
if(first.getNext()==null)
{
first.setNext(node);
}else {
node.setNext(first.getNext());
first.setNext(node);
}
}
public Node deleteFirst()
{
Node node=first.getNext();
first.setNext(node.getNext());
return node;
}
public void display()
{
Node current=first.getNext();
while(current!=null)
{
current.display();
current=current.getNext();
}
System.out.println();
}
public Node peek(int data)
{
Node current=first.getNext();
while(current.getNext()!=null)
{
if(current.getNext().getData()==data)
{
return current.getNext();
}else
{
current=current.getNext();
}
}
return null;
}
public Node delete(int data)
{
Node current=first;
Node node=null;
while(current.getNext()!=null)
{
if(current.getNext().getData()==data)
{
node=current.getNext();
current.setNext(current.getNext().getNext());
return node;
}else
{
current=current.getNext();
}
}
return null;
}
}
public class Test1 {
public static void main(String[] args) {
LinkList list=new LinkList();
list.insert(12);
list.insert(14);
list.insert(15);
list.insert(1);
list.insert(17);
list.insert(18);
list.display();
list.deleteFirst();
list.display();
list.delete(14);
list.display();
}
}