首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java入门-自定义链表的实现

2013-11-14 
Java入门---自定义链表的实现定义节点类/** * 链表的节点类 * @author se7en * */public class Node {publ

Java入门---自定义链表的实现
定义节点类

/** * 链表的节点类 * @author se7en * */public class Node {public int data;//元素的值public Node Next;//链表指针,指向下一个元素}


链表的实现类
/** * 链表的实现类 * @author se7en * 时间:2013年11月11日 23:37:56 */public class MyList {private Node head = null;//链表的头指针private int count = 0;//记录元素的个数//添加方法,默认添加到最后public void add(Node node){add(node,count);}//添加到指定pos位置public void add(Node node,int pos){//如果添加未知错误if(pos<0||pos>count){System.out.println("添加未知错误!");return;}//如果链表为空,直接将头指针指向nodeif(count == 0){head = node;count++;return;}//定义一个游标指针,并让其指向头节点Node flag = head;//循环找到要添加位置的上一个节点for(int i=0;i<pos-1;i++){flag = flag.Next;}//建立链接,添加元素node.Next = flag.Next;flag.Next = node;count++;}//删除方法,默认在头删除public Node remove(){remove(0);return null;}//删除指定位置pos的节点public Node remove(int pos){//如果删除未知错误if(pos<0||pos>count-1){System.out.println("删除位置错误!");return null;}//如果链表为空if(count == 0){System.out.println("链表为空,删除错误!");return null;}//定义一个游标指针flag,并让其指向头节点Node flag = head;//如果只有一个元素if(count == 1){head = null;count = 0;return flag;}//如果删除的是头节点,修改头指针if(pos == 0){head = head.Next;flag.Next = null;count--;return flag;}//其他情况//循环找到要删除未位置的前一个for(int j=0;j<count-1;j++){flag = flag.Next;}//定义一个临时指针temp,用来标记要删除的节点Node temp = flag.Next;//建立链接,删除节点flag.Next = temp.Next;temp.Next = null;count--;return temp;}//获取指定位置pos的元素public Node get(int pos){//定义一个游标指针,并让其指向头节点Node flag = head;//循环找到pos位置的节点for(int k=0;k<pos;k++){flag = flag.Next;}//复制一个要获取的节点,但next指向nullNode temp = new Node();temp.data = flag.data;temp.Next = null;return temp;}//获取元素个数的方法public int getSize(){return count;}}

热点排行