Java实现链表的插入,删除,排序,输出
2017-04-01 19:28
519 查看
//链表的数据结构:
package test;
class Node {
Node next=null;
int data;
public Node(int data){
this.data=data;
}
}
//链表操作 的实现:
package test;
import com.oj.Main1;
public class MyLinkedList {
Node head=null;
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;
}
tmp.next=newNode;
}
/**
*
* @param index 删除第index个结点
* @return
*/
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(){
int length=0;
Node tmp=head;
while(tmp!=null){
length++;
tmp=tmp.next;
}
return length;
}
/**
* 对链表排序
* 返回排序后的头结点
*/
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 temp=head;
while(temp!=null){
System.out.println(temp.data);
temp=temp.next;
}
}
public static void main(String[] args) {
MyLinkedList list=new MyLinkedList();
list.addNode(5);
list.addNode(3);
list.addNode(1);
list.addNode(3);
System.out.println("长度: "+list.length());
System.out.println("排序前:");
list.printList();
System.out.println("排序前:");
list.orderList();
System.out.println("排序后:");
list.printList();
System.out.println("删除结点后:");
list.deleteNode(3);
list.printList();
}
}
package test;
class Node {
Node next=null;
int data;
public Node(int data){
this.data=data;
}
}
//链表操作 的实现:
package test;
import com.oj.Main1;
public class MyLinkedList {
Node head=null;
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;
}
tmp.next=newNode;
}
/**
*
* @param index 删除第index个结点
* @return
*/
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(){
int length=0;
Node tmp=head;
while(tmp!=null){
length++;
tmp=tmp.next;
}
return length;
}
/**
* 对链表排序
* 返回排序后的头结点
*/
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 temp=head;
while(temp!=null){
System.out.println(temp.data);
temp=temp.next;
}
}
public static void main(String[] args) {
MyLinkedList list=new MyLinkedList();
list.addNode(5);
list.addNode(3);
list.addNode(1);
list.addNode(3);
System.out.println("长度: "+list.length());
System.out.println("排序前:");
list.printList();
System.out.println("排序前:");
list.orderList();
System.out.println("排序后:");
list.printList();
System.out.println("删除结点后:");
list.deleteNode(3);
list.printList();
}
}
相关文章推荐
- Java实现单链表的插入、删除、计算链表的长度和输出链表
- 利用链表来实现对员工信息的存储,排序,删除,插入
- 链表的java实现以及基本的增加,删除,排序操作
- 链表插入、链表相加、链表相乘、链表排序、链表合并等操作的java实现
- 数据结构Java实现03----单向链表的插入和删除
- 数据结构与算法分析笔记与总结(java实现)--链表8:对排序链表删除重复结点问题
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- c++ 实现双向链表构造函数,拷贝构造函数,析构函数,输出操作符重载,赋值操作符重载,头插尾插,头删尾删,任意位置插入,任意位置删除,查找等
- 数据结构Java实现【3】----单向链表的插入和删除
- Java实现单链表插入删除等基本操作
- 用JAVA语言,编写一个链表类(双向链表),实现插入,删除,查找操作
- java实现单链表的初始化,创建,删除,插入,查找,排序,同项删除,退出等功能
- Java实现-删除排序链表中的重复元素2
- C语言实现双向链表删除节点、插入节点、双向输出等操作
- 单链表的基本操作:建立,求长度,输出,排序,插入,删除,逆置
- C语言实现双向链表删除节点、插入节点、双向输出等操作
- 【回忆c语言】从指针的定义初始化到链表的插入删除排序实现code
- 数据结构Java实现03----单向链表的插入和删除
- C语言单向动态链表程序,实现链表的建立,合并,重新排序,链表元素的插入与删除,以及根据元素成员的值进行元素删除。