【DataStructure】Linked Data Structures
Arrayss work well for unordered sequences, and even for ordered squences if they don't change much. But if you want to maintain an ordered list that allows quick insertions and deletions, you should use a linked data structure.
so inserting an element using array may have to move a lot of data. if n = 1000 and x is less than all of those elements, then the method will move all 1000 elements. On average, inserting into a sorted array of n elements
will move n/2 elements. So this is a F(n) operation. Deleting an element is simply the reverse of the insertion process, It too will have to move n/2 elements, on average, so deletion is also a f(n) operation.
The following is a simple example about linked list.
package com.albertshao.ds.array; public class TestNode {
public static void main(String[] args) {
Node start = new Node(22);
Node p = start;
for (int i = 1; i < 5; i++)
p = p.next = new Node(22 + 11 * i);
for (p = start; p != null; p = p.next)
System.out.println(p.data);
for (p = start; p != null; p = p.next)
System.out.println(p);
}
} class Node {
int data;
Node next; Node(int data) {
this.data = data;
}
}
The output is as follows:
22
33
44
55
66
com.albertshao.ds.array.Node@c17164
com.albertshao.ds.array.Node@1fb8ee3
com.albertshao.ds.array.Node@61de33
com.albertshao.ds.array.Node@14318bb
com.albertshao.ds.array.Node@ca0b6
Test the insert element into linked list.
// Data Structures with Java
// by John R. Hubbard and Anita Huray
// Copyright 2004 by Prentice Hall package com.albertshao.ds.array; public class TestInsert {
TestInsert() {
Node start = init();
print(start);
insert(start, 50);
print(start);
} Node init() {
Node start = new Node(22), p = start;
for (int i=1; i<5; i++)
p = p.next = new Node(22+11*i);
return start;
} void print(Node start) {
for (Node p=start; p!=null; p=p.next)
System.out.print(p.data + " ");
System.out.println();
} void insert(Node start, int x) {
// PRECONDITIONS: the list is in ascending order, and x > start.data;
// POSTCONDITIONS: the list is in ascending order, and it contains x;
Node p = start;
while (p.next != null) {
if (p.next.data > x) break;
p = p.next;
}
p.next = new Node(x,p.next);
} public static void main(String[] args) {
new TestInsert();
} class Node {
private int data;
private Node next; public Node(int data) {
this.data = data;
} public Node(int data, Node next) {
this.data = data;
this.next = next;
}
}
} /* Output:
22 33 44 55 66
22 33 44 50 55 66
*/
The method of deleting element is as follows:
Node delete(Node start, int x) {
// precondition: the list is in ascending order;
// postconditions: the list is in ascending order, and if it did
// contains x, then the first occurrence of x has been deleted;
if (start == null || start.data > x)
return start; // x is not in the list
if (start.data==x) return start.next;
for (Node p = start; p.next != null; p = p.next) {
if (p.next.data > x) break; // x is not in the list
if (p.next.data == x) {
p.next = p.next.next; // delete x
break;
}
}
return start;
}
【DataStructure】Linked Data Structures的更多相关文章
- 【DataGuard】部署Data Guard相关参数详解 (转载)
原文地址:[DataGuard]部署Data Guard相关参数详解 作者:secooler 有关物理Data Guard部署参考<[DataGuard]同一台主机实现物理Data Gua ...
- 【Leetcode】Linked List Cycle II
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Foll ...
- 【机器学习】Iris Data Set(鸢尾花数据集)
[机器学习]Iris Data Set(鸢尾花数据集) 注:数据是机器学习模型的原材料,当下机器学习的热潮离不开大数据的支撑.在机器学习领域,有大量的公开数据集可以使用,从几百个样本到几十万个样本的数 ...
- 【DataStructure】Description and usage of queue
[Description] A queue is a collection that implements the first-in-first-out protocal. This means th ...
- 【DataStructure】One of queue usage: Simulation System
Statements: This blog was written by me, but most of content is quoted from book[Data Structure wit ...
- 【DataStructure】The description of Java Collections Framework
The Java Connections FrameWork is a group of class or method and interfacs in the java.util package. ...
- 【DataStructure】Description and Introduction of Tree
[Description] At ree is a nonlinear data structure that models a hierarchical organization. The char ...
- 【转】char data[0]用法总结
@2019-07-31 struct MyData { int nLen; ]; }; 开始没有理解红色部分的内容,上网搜索下,发现用处很大,记录下来. 在结构中,data是一个数组名:但该数组没有元 ...
- 【C#】Send data between applications
This sample shows how to send data between different applications, including object data——transform ...
随机推荐
- iOS:即时通讯之<了解篇 SocKet>
什么是socket? 计算机专业术语就是: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进 ...
- AP_付款方式汇总:标准付款、退款退货付款、撤销付款(概念)
2014-06-04 Created By BaoXinjian
- 锻造完美U盘小偷:活用消息机制
锻造完美U盘小偷:活用消息机制作者:灰狐来源:灰狐's Blog 注:本文已发表在<黑客防线>2008年第1期,转载请注明出处. 以前经常看到有人做出一些蛮有意思的小工具,其中最多的似乎就 ...
- centos部署supervisor
#!/bin/bash yum -y install python-setuptools ping pypi.python.org -c 4 >/dev/null 2>&1 eas ...
- Unix lrzsz命令 上传本地文件到服务器 / 发送文件到客户端
第三方教程:https://www.jb51.net/article/73690.htm 安装命令: $ yum install lrzsz 本地上传文件到服务器,如果是xshell,直接拖拽文件进入 ...
- kafka linux 启动脚本 sample
#!/bin/sh # # chkconfig: 345 99 01 # description: Kafka # # File : Kafka # # Description: Starts and ...
- adobe acrobat 无效批注对象
http://blog.csdn.net/pipisorry/article/details/40894881 adobe acrobat一直弹出 无效批注对象 检查后提示:"本页面上的全部 ...
- 【Android】12.3 在当前Activity中获取另一个Activity的返回值
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 在上一节的示例中,通过StartActivity(Intent)方法启动另一个Activity后,这两个Activ ...
- linux io architecture
http://www.cs.columbia.edu/~krj/os/lectures/L24-IO.pdf http://events.linuxfoundation.org/sites/event ...
- Azure Nosql
patterns & practices https://msdn.microsoft.com/en-us/library/ff921345.aspx Solution Development ...