Java数据结构(链表篇)
来源:互联网 发布:至上励合淘宝网店老婆 编辑:程序博客网 时间:2024/05/22 14:40
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,链表比较方便插入和删除操作。
连接点:
package ch04Link;public class Link {// 数据域private long data;// 指针域private Link next;// 构造函数public Link(long data) {this.data = data;}public long getData() {return data;}public void setData(long data) {this.data = data;}public Link getNext() {return next;}public void setNext(Link next) {this.next = next;}}
测试连接点:
package ch04Link;public class TestLink {public static void main(String[] args) {Link link1 = new Link(10);Link link2 = new Link(50);Link link3 = new Link(20);Link link4 = new Link(100);link1.setNext(link2);link2.setNext(link3);link3.setNext(link4);System.out.println(link1.getData());System.out.println(link1.getNext().getData());System.out.println(link1.getNext().getNext().getData());System.out.println(link1.getNext().getNext().getNext().getData());}}
链表:
package ch04Link;/** * 链表:核心思想:链表中只包含一个数据项,即对第一个连接点的引用 * @author hadoop * */public class LinkList {private Link first;// 插入public void insert(long value){Link link = new Link(value);if(first == null)first = link;else{link.setNext(first);first = link;}}// 打印链表public void display(){Link current = first;while(current != null){System.out.print(current.getData() + " ");current = current.getNext();}}// 查询链表 public Link find(long key){Link current = first;while(current.getData() != key){if(current.getNext() == null)return null;current = current.getNext();}return current;}// 插入节点到指定位置public void insert(long value, int pos){if(pos == 0)insert(value);else{Link current = first;for(int i = 0; i < pos - 1; i++)current = current.getNext();Link link = new Link(value);link.setNext(current.getNext());current.setNext(link);}}// 删除节点public void delete(long value){Link current = first;Link ago = first;while(current.getData() != value){if(current.getNext() == null)return;else{ago = current;current = current.getNext();}}if(current == first)first = first.getNext();elseago.setNext(current.getNext());}}
测试:
package ch04Link;public class TestLinkList {public static void main(String[] args) {LinkList linkList = new LinkList();linkList.insert(20);linkList.insert(80);linkList.insert(40);linkList.insert(60);linkList.display();System.out.println();System.out.println("找到节点,数据为:" + linkList.find(80).getData());linkList.insert(100, 0);linkList.display();System.out.println();linkList.delete(80);linkList.display();}}
比较链表和顺序表:
package ch04Link;import ch01Array.MyArray;public class Test {public static void main(String[] args) {// 构造链表long date1 = System.currentTimeMillis();LinkList linkList = new LinkList();for(int i = 0; i < 1000000; i++)linkList.insert(i);long date2 = System.currentTimeMillis();System.out.println(date2 - date1);// 构造顺序表long date3 = System.currentTimeMillis();MyArray myArray = new MyArray(1000000 + 1);for(int i = 0; i < 1000000; i++)myArray.insert(i);long date4 = System.currentTimeMillis();System.out.println(date4 - date3);// 链表删除long date5 = System.currentTimeMillis();linkList.delete(60000);long date6 = System.currentTimeMillis();System.out.println(date6 - date5);// 顺序表删除long date7 = System.currentTimeMillis();myArray.delete(60000);long date8 = System.currentTimeMillis();System.out.println(date8 - date7);}}
- Java数据结构(链表篇)
- java数据结构(一)
- Java数据结构(栈篇)
- 数据结构--链表(java)
- 数据结构--栈(java)
- 数据结构--队列(java)
- 数据结构--红黑树(java)
- java数据结构(1)
- 数据结构(java)----MyArrayList
- 数据结构(java)---MyLinkedList
- java数据结构(单链表)
- 数据结构(java)----BinarySearchTree
- Java 数据结构(链表)
- 数据结构-表(java)
- 数据结构(Java)--双链表
- 数据结构(Java)--图
- 数据结构(Java)--排序
- 数据结构(Java)--查找
- 织梦DedeCMS列表页调用文章正文方法
- 项目六--工资类
- 通过JDBC-ODBC连接数据库,读取数据库信息并显示
- zencart1.51后台inactivity问题
- JSP使用纯Java数据库驱动程序连接数据库
- Java数据结构(链表篇)
- JSP制作登录页面:login.jsp
- 对称子串的最大长度
- VS2010中出现无法嵌入互操作类型
- 龟兔赛跑
- 如何将自制的SurfaceView绘制到界面中去
- FTP主动模式与FTP被动模式
- JSP验证用户是否登录:check.jsp
- JSP制作员工管理系统后台:admin.jsp