Java与数据结构(二) 单链表
来源:互联网 发布:淘宝达人怎么修改昵称 编辑:程序博客网 时间:2024/04/30 06:58
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1).
Java代码实现如下:
package 数据结构和算法;class Node<E>{E data;//数值域Node next;//地址域Node(E element){this.data = element;}}public class List<E> {//头结点Node<E> head;int i;//设置一个空的头节点List(){head = new Node(0);i=1;}//设置一个有数值的头结点List(E data){head = new Node(data);i=1;}//插入一个元素,在index个元素后面添加elementvoid Insert(int index, E element){Node node = new Node(element);Node current = head;for(int j=1;j<index;j++){current = current.next;}node.next = current.next;current.next = node;i++;}//删除一个元素void Remove(int index){Node current = head;if(index==1){head = head.next;i--;}//删除头节点else{for(int j=1;j<index-1;j++){current = current.next;}Node Temp = current.next;current.next=Temp.next;i--;}}//在末尾插入一个元素void Add(E element){Insert(i,element);}//返回链表元素个数int ReturnSize(){return i;}//打印链表所有元素void Print(){Node node = head;for(int j=1;j<i;j++){System.out.print(node.data+" ");node = node.next;}System.out.println(node.data);}public static void main(String[] args){List L1 = new List(1);List L2 = new List(11);for(int i=2;i<=10;i++)L1.Add(i);L1.Print();L1.Insert(1, 1.5);L1.Print();L1.Remove(1);L1.Print();}}OutPut:
1 2 3 4 5 6 7 8 9 10
1 1.5 2 3 4 5 6 7 8 9 10
1.5 2 3 4 5 6 7 8 9 10
阅读全文
0 0
- Java与数据结构(二) 单链表
- java数据结构 二(单链表)
- Java数据结构与算法之数组(二)
- C++,java算法与数据结构(二)--慕课网笔记
- Java版数据结构与算法(二)
- <二>java数据结构与算法 冒泡排序
- Java数据结构与算法《二》简单排序
- 数据结构与算法(二)
- 数据结构(二)---单链表的实现---java版
- 算法与数据结构之二-------单链表
- 数据结构与算法总论(二)
- 数据结构与程序架构(二)
- 数据结构与算法(二)线性表
- 数据结构与算法--二叉树(二)
- 数据结构与算法:数组(二)
- 数据结构与经典算法(二)
- 数据结构学习 栈与队列(二)
- JS数据结构与算法(二)
- [POJ3744]Scout YYF I 期望DP
- 习题6-12 筛子难题(A Dicey Problem, ACM/ICPC World Finals 1999, UVa810)
- 前端MVC&MVP&MVVM
- 不忘初心,方得始终
- cURL支持https--移植--集成mbedTLS
- Java与数据结构(二) 单链表
- Oracle数据库(where语句和列表达式)
- 解决ubuntu中不能使用搜狗输入法
- package.json
- HTTPS
- charels破解版安装和使用(超详细图文教程)
- hdu 2224 The shortest path(双调欧几里得旅行商问题)
- Android开发简述
- Android实现ImageView图片双击放大及缩小