您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法学习之链表的增加、删除

2015-09-10 12:46 453 查看
package com.java;

class Node {
Node next=null;
int data;
public Node(int data) {
// TODO Auto-generated constructor stub
this.data=data;
}
}

public class ImpAddDel {

Node head = null;//链表头的引用
/**
* 向链表中插入数据
* @param d插入数据的内容
*/
public void addNode(int d){//要插入的数据
Node newNode = new Node(d);
if (head==null) {
head=newNode ;
return;
}
Node tmp = head;
while(tmp.next!=null){//循环得到链表的最后一个节点
tmp= tmp.next;

}
//add node to end
tmp.next=newNode;
}
/**
* 删除节点
* @param index要删除的节点下标
* @return 成功返回true 失败返回false;
*/
public boolean deleteNode(int index ){

if(index<1||index>length())//判断节点下标是否合理
{
return false;
}

if (index==1) {
head= head.next;
return true ;
}
int i =1;
Node preNode = head;
Node curNode = preNode.next;
while (curNode!=null)
{
if (i==index) {
preNode.next= curNode.next;
return true;
}
preNode=curNode;
curNode=curNode.next;
i++;
}
return true;
}

/**
*
* @return 返回节点的长度
*/
public int length() {
// TODO Auto-generated method stub
int length =1 ;
Node tmp =head;
while(tmp.next!=null){
length++;
tmp= tmp.next;
}
return length;
}

/**
* 链表排序
* @return返回链表头的引用
*/
public Node orderList(){
Node nextNode = null ;
int temp=0;
Node curNode=head;
while(curNode.next!=null){
nextNode=curNode.next;
while(nextNode!=null){
if (curNode.data>nextNode.data) {
temp=curNode.data;
curNode.data=nextNode.data;
nextNode.data=temp;

}
nextNode=nextNode.next;
}
curNode=curNode.next;
}
return head;

}
/**
* 输出链表
*/
public void printList(){
Node tmp = head;
while (tmp!=null){
System.out.println(tmp.data);
tmp=tmp.next;
}
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ImpAddDel list = new ImpAddDel();
list.addNode(5);
list.addNode(3);
list.addNode(1);
list.addNode(3);
System.out.println("listLen = "+ list.length());
System.out.println("before order:");
list.printList();
list.orderList();
System.out.println("after order:");
list.printList();
list.deleteNode(2);
list.printList();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: