`
kathy
  • 浏览: 3162 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
最近访客 更多访客>>
社区版块
存档分类
最新评论

数据结构—线性表的存储方式

阅读更多
   线性表的存储方式有两种,一种是顺序表,另外一种是链表。顺序表是一种简单且常用的存储方式。在顺序表中,逻辑相邻的数据,存储地址也相邻。在链表中,逻辑相邻的数据,存储地址不一定相邻。
    顺序表的实现比较简单,通常用数组实现,数组长度确定,将逻辑相邻的数据存储在相邻的地址中,可以计算每个数据的地址,由序号快速查找数据。但是插入、删除需要平均移动
O(n)数据,很不方便。在长度为n的线性表中第i个位置插入数据的过程,需要移动n-i个数据,删除第i个位置的数据需要移动n-i-1个数据。线性表的顺序表代码实现如下:
  
public class linearDeno1{
 private int currentLength;
 private int array[]=new int[100];
 public linearDemo1{
  array[]=new int[100];
}
public void add(int temp){
array[current]=temp;
currentLength++;
}
public void insert(int i,int temp){
int j;
for( j=currentLength-1;j>i-1;j--){
array[j+1]=array[j];
}
array[j]=temp;
}
public void deleteNum(int i){
for( j=currentLength-1;j>i-1;j--){
array[j-1]=array[j];
}
public void deleteContent(int temp){
for(int i=0;i<currentLength;i++){
if(array[i]==temp)}{
for(int j=j=currentLength-1;j>i-1;j--){
array[j-1]=array[j];

}
}
}
}
}

    链表的实现较为复杂,数据存储在不连续的地址中。不能随机查找,只能按顺序查。但是链表的插入和删除非常方便,且长度可变,很灵活。链表分为单链表和其他链表,线性表的实现以单链表为例。单链表分为带头的和不带头的单链表。当链表需要维护确定的信息是用带头的。这样对于插入和删除也比较方便,不用对头进行特殊处理。但是浪费一些存储空间。当不需维护某些信息时,用不带头的单链表,节省存储空间,但对头需要做特殊处理。下面用带头单链表实现。
  
public class Node{
private int name;
private Node next;
public Node(){
}
public Node(int name){
this.name=name;
}
public Node(Node next){
this.next=next;}
public Node(int name,Node next){
this.name=name;
this.next=next;
}
public void setName(){
this.name=name;

}
public int getName(){
return name;}
public void setNext(){
this.next=next;

}
public int getNext(){
return next;}}
public class linearDeno2{
private Node head;

public linearDeno2{
head =new Node(5);}
public void initFirst(Node temp){
temp.setNext(head.getNext);
head.setNext(temp);
}
public void initLast(Node temp){
int length = getLength();
insert(length,temp);
}
public void insert(int i,Node temp){
Node p=getNode(i-1);
temp.setNext(p.getNext());
p.setNext(temp);
}
public void delete(int i){
Node p=getNode(i-1);
p.setNext(p.getNext.getNext)
}
public void delete(Node temp){
int i=0;
Node p=head.getNext();
while(p!=null){
if(p.getNext().equals(temp){
Node p=getNode(i-1);
p.setNext(p.getNext.getNext
}
)
}

public int getLength(){
int length=0;
if(head.getNext()!=null){
Node p=head.getNext();
while(p!=null){
p=p.getNext}
length++;
}
return length;}
public Node getNode(int i){
if(i<0||i>getLength()){
throw new Exception("输入不合法!");}
int j=0;
Node p=head.getNext();
while(p!=null&&j<i){
p=p.getNext();
j++;}
return p; }
}

   总之,顺序表适合静态线性表,多次随机查询,尽量少插入删除。单链表适合动态线性表,长度动态变化,多次插入删除。
分享到:
评论
1 楼 飘零羽 2012-06-15  
这个写得还凑合,比那两篇好

相关推荐

    数据结构 线性表 代码

    在IT领域,数据结构是计算机科学的基础,它研究如何组织和管理数据,以便高效地进行存储、检索和处理。线性表是数据结构中的基本概念,它是一种有序的数据集合,其中每个元素都有一个前驱和后继(除了首元素和尾元素...

    数据结构线性表代码数据结构线性表代码数据结构线性表代码

    通过分析和学习这个代码,你可以深入理解线性表的数据结构,掌握如何在实际编程中实现线性表的各种操作,并了解数组和链表这两种不同的存储方式对性能的影响。这对于进一步学习高级数据结构,如树、图以及算法设计和...

    数据结构线性表全代码

    数据结构线性表全代码 数据结构中的线性表是一种基本的数据结构形式,它可以存储和管理大量的数据。线性表可以分为顺序表、单链表、循环链表、双向链表和双向循环链表等多种形式,每种形式都有其特点和应用场景。 ...

    数据结构 线性表 链表

    线性表是一种基础且重要的数据结构,它由n个数据元素组成的一个有限序列。这些元素通常是同一类型,具有均匀性,比如数学中的数列、英文字母表或者一个单位的电话号码簿。线性表的特点包括相邻性、有限性和有序性。...

    c语言数据结构线性表创建删除插入

    本主题聚焦于C语言中的数据结构——线性表,这是数据结构的基础概念之一,适用于初学者学习。线性表是一种逻辑上一维、元素之间具有线性关系的数据结构。下面将详细阐述线性表的创建、删除和插入操作。 1. **线性表...

    数据结构线性表实验

    根据给定的信息,我们可以深入探讨线性表在数据结构中的实现与应用。线性表是计算机科学中最基本的数据结构之一,它由具有相同特性的数据元素组成,这些元素按照一定的顺序排列。本篇将详细解释如何通过C语言来实现...

    数据结构 线性表 实验 C++ 链表

    线性表作为最基础的数据结构之一,广泛应用于各种算法和程序设计中。本实验聚焦于线性表在C++环境下的实现,特别关注链表这一特殊的线性表类型。 线性表是由n(n&gt;=0)个相同类型元素构成的有限序列,其顺序可以是...

    数据结构线性表的顺序存储结构

    实验 二 基于链式存储结构 实现线性表的基本的 常见的运算 提示: ⑴ 提供一个实现功能的演示系统 ⑵ 具体物理结构和数据元素类型自行选定 ⑶ 线性表数据可以使用磁盘文件永久保存

    c语言数据结构线性表实验(包括顺序表和链表)

    在这个"C语言数据结构线性表实验"中,我们将深入探讨两种实现线性表的方法:顺序表和链表。 1. **顺序表**: - **定义**:顺序表是将数据元素存储在一块连续的内存区域中,每个元素都有一个固定的索引位置。 - **...

    数据结构线性表相关知识总结

    ### 数据结构线性表相关知识总结 #### 一、线性结构的特点 线性结构是数据结构中最基本的一种,其特点主要包括以下几点: 1. **唯一性**:线性结构中存在唯一的一个被称为“第一个”的数据元素,同样也存在唯一的...

    数据结构-线性表

    学习和理解线性表的两种存储方式不仅对深入数据结构的学习至关重要,也为后续理解栈、队列、树、图等复杂数据结构奠定了基础。顺序结构和链式结构的基本操作是实现这些高级数据结构的基础,而熟悉这些操作则有助于...

    数据结构线性表作业

    数据结构线性表作业 在本资源中,我们将深入探讨数据结构线性表的作业,涵盖了线性表的定义、特点、操作和应用。同时,我们还会解释线性表的频度、时间复杂度和空间复杂度等概念,并通过具体的代码示例和算法来实现...

    数据结构之线性表的顺序表示和实现

    线性表是数据结构中最基础且重要的一种结构,它是由n(n≥0)个相同类型元素构成的有限序列。在线性表中,元素之间的逻辑关系是线性的,即每个元素都有一个前驱元素和一个后继元素,除了第一个元素没有前驱,最后一...

    数据结构线性表实验源代码

    根据给定的信息,我们可以分析并总结出以下关于“数据结构线性表实验源代码”的相关知识点: ### 一、线性表概述 线性表是数据结构中最基本的一种线性结构,它是由相同类型的元素组成的有限序列。在这个序列中,...

    c语言数据结构实现线性表

    通过上述C语言实现的线性表,我们可以深入理解数据结构中的线性表,包括其逻辑结构、物理存储、操作效率等概念。同时,通过实践编写代码,能更好地掌握C语言的基本语法和动态内存管理。对于学习数据结构和算法来说,...

    数据结构线性表的创建

    ### 数据结构线性表的创建 #### 知识点概览 本文将详细介绍如何使用C语言实现线性表的基本操作,包括线性表的创建、遍历、获取长度、插入与删除元素等核心功能。线性表是数据结构中最基本且重要的数据类型之一,它...

    数据结构 线性表PPT学习教案.pptx

    数据结构中的线性表是一种基础且重要的数据组织形式,它由一个有序的元素序列组成,这些元素可以是任何数据类型。线性表的抽象数据类型(ADT)定义了对这种数据结构的操作集,包括创建、销毁、检查是否为空、获取...

Global site tag (gtag.js) - Google Analytics