容器(Container):存储对象的东西。
容器是一个设计上的术语,不是一个语法概念。
比如数组,就是一个容器
数组容器
缺点:
1.容量固定,无法扩展。既不能射太大,也不能太小,很难确定。
2.插入和删除代价大。
链表可以完美解决。
链表(Linked List):一种组织数据的方式;
链表与容器:
严格来说,链表并不是容器,链表只是容器的一种实现方式;
1.插入链表
2.删除链表
3.查找链表
LinkList.java
LinkNode.java
容器是一个设计上的术语,不是一个语法概念。
比如数组,就是一个容器
数组容器
缺点:
1.容量固定,无法扩展。既不能射太大,也不能太小,很难确定。
2.插入和删除代价大。
链表可以完美解决。
链表(Linked List):一种组织数据的方式;
链表与容器:
严格来说,链表并不是容器,链表只是容器的一种实现方式;
1.插入链表
2.删除链表
3.查找链表
把对象放入容器;
下面是Java单链表的代码:
HelloWorld.java
package my;
public class HelloWorld
{
public static void main(String[] args)
{
LinkList a=new LinkList();
for(int i=0;i<10;i++) { //构造一个链表
LinkNode b=new LinkNode(i);
a.insertNode(i, b);
}
System.out.print("初始化的链表:");
a.showList();
LinkNode b=new LinkNode(100);
System.out.print("(从0开始数)在第三个位置插入结点:");
a.insertNode(3, b);
a.showList();
System.out.print("(从0开始数)删除第三个位置的结点:");
a.deleteNode(3);
a.showList();
}
}
LinkList.java
package my;
public class LinkList
{
private LinkNode head;
private int NodeNum=0;
private LinkNode q;
public LinkList() {
head=new LinkNode(0); //头结点
head.next=null;
}
public void insertNode(int position,LinkNode p) { //从下标0开始插入
if(position<0||position>NodeNum) {
System.out.println("插入失败,位置有问题");
return;
}
q=head;
for(int i=0;i<position;i++) {
q=q.next;
}
p.next=q.next;
q.next=p;
NodeNum++;
}
public void deleteNode(int position) {
if(position<0||position>NodeNum) {
System.out.println("删除失败,位置有问题");
return;
}
q=head;
for(int i=0;i<position;i++)
q=q.next;
q.next=q.next.next;
NodeNum--;
}
public void showList() {
for(LinkNode p=head.next;p!=null;p=p.next)
System.out.print(p.data+"->");
System.out.print("null\n");
}
}
LinkNode.java
package my;
public class LinkNode
{
int data;
LinkNode next;
public LinkNode(int i) {
data=i;
}
}