链表作为最基础的数据结构,在程序设计中具有非常重要的作用,起存储特点如下:可以用任意一组存储单元来存储单链表中的数据元素(存储单元可以是不连续的),而且,除了存储每个数据元素ai 外,还必须存储指示其直接后继元素的信息,这两部分信息组成的数据元素aI 的存储映像成为结点。N个结点连接在一块被称为链表,当结点只包含其后继结点的信息的链表就被称为单链表,如下图所示.
在java 语言中可定义如下数据类来存储信息结点信息。
class Node{
Node next=null;
int data;
public Node(int a){
this.data=a;
}
}
链表最重要的操作就是对链表的插入和删除元素。
单链表的插入操作是将值为X的新结点插入到单链表的第i个结点的位置
下面给出操作链表的操作示例Java代码:
class Node{
Node next=null;
int data;
public Node(int a){
this.data=a;
}
}
public class test3 {
static Node head=null;
/**
* 插入节点
* @param a
*/
public void addNode(int a){
Node newNode = new Node(a);
if(head==null){
head=newNode;
return;
}
Node tmp=head;
while(tmp.next!=null){
tmp=tmp.next;
}
tmp.next=newNode;
}
/**
* 删除节点
* @param i
* @return
*/
public boolean deleteNode(int i){
if(i<0 && i>getLength()-1){
return false;
}
int index=1;
Node preNode=head;
Node cuurenNode=head.next;
while(i>index){
preNode=cuurenNode;
cuurenNode=cuurenNode.next;
index++;
}
preNode.next=cuurenNode.next;
return true;
}
/**
* 获取链表长度
* @return
*/
public int getLength(){
int length=0;
Node tmp=head;
if(tmp!=null){
tmp=head.next;
length++;
}
return length;
}
/**
* 打印节点
*/
public static void println(){
Node tmp=head;
while(tmp!=null){
System.out.println(tmp.data);
tmp=tmp.next;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
test3 test =new test3();
test.addNode(1);
test.addNode(2);
test.addNode(3);
test.addNode(4);
test.addNode(5);
println();
test.deleteNode(1);
println();
}
}