您的位置:首页 > 编程语言 > Java开发

java实现单链表(一)

2015-11-25 17:26 211 查看
package com.test;

import javax.swing.text.AbstractDocument.LeafElement;

public class LinkList1<DT> {
/**
*
* @author aolei
*
* @param <DT>
*
* 节点类
*/
public static class Node<DT>{
DT data;//数据
Node<DT> pNext;//指针
/*
* 构造函数
*/
Node(DT element,Node<DT> pNext){
this.data = element;
this.pNext = pNext;
}
Node(DT element){
this(element, null);
}
Node(){}
}
private Node<DT> first;
private static int length;//记录链表的长度
public LinkList1() {
// TODO Auto-generated constructor stub
first = new Node();
first.pNext = null;
}
/**
* 判断链表是否为空
* @return
*/
public boolean isEmpty(){
return first.pNext == null;
}
/**
* 添加元素到链表的节点中
* @param data
*/
public void addElement(DT data){
Node<DT> node = new Node<DT>(data);
node.pNext = first.pNext;
first.pNext = node;
length++;
}
/**
* 打印链表
*/
public void printLinklist(){
if ( isEmpty()){
System.out.println("Linklist is NULL");
}
Node<DT> node = first.pNext;
for (;node != null;node = node.pNext){
System.out.println(node.data);
}
}
/**
* 插入节点
* @param data 要插入的数据
* @param local 要插入的位置
* @return 是否插入成功
*/
public boolean insertNode(DT data, int local){
int currentLocal = 0;
if (isEmpty()){
System.out.println("插入失败");
System.out.println("Linklist is NULL");
return false;
}else{
Node<DT> pNode = first.pNext;
Node<DT> newNode = new Node<DT>(data);
while(pNode.pNext != null && currentLocal < local){
pNode = pNode.pNext;
currentLocal++;
}
newNode.pNext = pNode.pNext;
pNode.pNext = newNode;
return true;
}
}
/**
* 删除节点
* @param local 要删除节点的位置
* @return true 删除成功 false 删除失败
*/
public boolean deleteNode(int local){
int currentlocal = 0;
if (isEmpty()){
System.out.println("删除失败");
System.out.println("Linklist is NULL");
return false;
}else{
Node<DT> pNode = first;
while(pNode.pNext != null && currentlocal < local){
pNode = pNode.pNext;
currentlocal++;
}
pNode.pNext = pNode.pNext.pNext;
return true;
}
}
public static void main(String[] args) {
LinkList1<String> stringLinkList = new LinkList1<String>();
/*stringLinkList.addElement("A");
stringLinkList.addElement("B");
stringLinkList.addElement("C");*/
stringLinkList.printLinklist();
/*if(stringLinkList.insertNode("D", 3)){
System.out.println("插入成功");
stringLinkList.printLinklist();
}*/
/*if (stringLinkList.deleteNode(0)){
System.out.println("删除成功");
stringLinkList.printLinklist();
}*/
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: