JAVA 实现线性表之链表
来源:互联网 发布:阴阳师6星土豪酒吞数据 编辑:程序博客网 时间:2024/06/05 19:59
JAVA 实现线性表之链表
今天用一天的时间才敲完一个链表,还有很多漏洞,先贴出来供大家参考。
定义接口:
package com.guobing.link;public interface LinkI {public void Insert(Object T);public void Insert(Object T, int i) throws Exception;public void DeleteAll();public boolean IsEmpty();public boolean IsEnd();}
实现接口:
package com.guobing.linkImpl;import com.guobing.link.LinkI;public class LinkList implements LinkI{/** * 对一个单链表本身来说,应该有这么几个信息 * 头结点、头指针、尾指针 头指针指向头结点 * 如果线性表为空表, 则头结点的指针域为空 * 所以应该在LinkList中定义这几个变量 */private Node head=null;//首结点private Node tail=null;//尾结点//private Node HeadPointer=null;//头指针 带头结点的链表才有头指针private int size;@Overridepublic void DeleteAll() {head = null;tail = null;}/** * 初始化 创建头指针 */public void init(Object T) {Node node = new Node(T);head = node;if(tail == null)tail = head;size++;}/** * 在指定的位置插入元素 这里有些问题, 不能在首指针处添加 后面有专门的方法实现 * 当然可以改,但我随便一下》》》 */@Overridepublic void Insert(Object T, int i) throws Exception {if(i<0||i>size+1) {//+1是为了可以在尾指针处添加throw new Exception("你输入的数字不合法,请检查");}if(i>size){InsertAtTail(T);//尾指针处插入} else {Node node = new Node(T);//创建要插入结点的信息Node p = head;int j = 1;while(p.next != null && j<i-1) {p = p.next;j++;}node.next = p.next;p.next = node;}size ++;}/** * 在首节点处插入 效率很高 * @param T */public void InsertAtHead(Object T) {Node p = new Node(T);p.next = head;head = p;}/** * 在尾结点插入数据 效率很高 * @param T */public void InsertAtTail(Object T) {if(!IsEmpty()) {tail.next = new Node(T);tail = tail.next;size ++;}}/** * 删除首结点 效率很高 */public void DeleteAtHead() {if(!IsEmpty()) {head = head.next;}}/** * 删除尾结点 效率很低 */public void DeleteAtTail() {if(!IsEmpty()) {Node p = head;while(p.next != null) {p = p.next;}tail = p;tail.next = null;}}@Overridepublic boolean IsEmpty() {return (this.head == null);}@Overridepublic boolean IsEnd() {// TODO Auto-generated method stubreturn (this.tail == null);}@Overridepublic void Insert(Object T) {//这个方法忽略// TODO Auto-generated method stub}/** * 得到指定位置元素的值 * @param i */public void getElem(int i) {Node p = head;int j = 0;while(p.next != null && j<i) {p = p.next;j ++;}System.out.println("Elem[" + i + "]" + "的值是:" + p.date);}/** * 打印出链表中的数据 */public void print() {Node current = head;while(current !=null) {System.out.print(current.date + " ");current = current.next;}}public static void main(String [] args) throws Exception {LinkList list = new LinkList();list.init("a");list.InsertAtTail("b");list.InsertAtTail("c");list.InsertAtTail("d");list.InsertAtTail("e");list.Insert("aaa", 3);System.out.println(list.size);list.print();list.getElem(0);list.getElem(3);}}
0 0
- JAVA 实现线性表之链表
- java数据结构:线性表之数组实现
- java数据结构之线性表代码实现
- java 实现线性表之顺序存储
- java 实现数据结构之线性表
- 线性链表 java实现
- java实现线性链表
- (数据结构)线性表之链表,java实现
- Java实现线性表
- java线性表实现
- java 实现线性表
- Java实现线性表
- 线性表java实现
- java实现线性表
- [图解数据结构之Java实现](2) --- 线性表之链表实现
- java 链表实现线性表
- 线性表实现之单链表
- 数据结构之线性表实现
- 发生过的回复汇添富
- adb操作命令详解及大全
- usb驱动框架(usb-skeleton)分析总结
- SanguoSHA - HDU 4068 暴力枚举
- Java 跳出多重循环
- JAVA 实现线性表之链表
- poj2363
- 动态规划 (三) 背包问题
- hello world
- 黑马程序员——java for循环学习总结
- 花生壳绑定IP解决动态IP问题
- 算法设计之蛮力法
- 算法笔记--八个常见排序算法总结
- 程序员生存定律-六个程序员的故事(3)