第二章 线性表

2.1线性表类型定义

  线性表描述:A=(a1,a2,...an);A为线性表的名称,ai为线性表 的数据元素。

  线性表的离散定义:B=<A,R>,A包含n个结点(a1,a2,...an),R中只包含一个关系,即线性关系,R={(ai-1,ai)|i=1,2,....,n},

  一般的线性表的操作可以包含以下几种:

  * public linklist()  建立一个空的线性表。

  * public linklist(collection c)  将collection c中的数据依次建立一个线性表。

  * public object getfirst()  返回线性表的第一个元素。

  * public object getlast()  返回线性表的最后一个元素 。

   * public object removefirst()  删除线性表的第一个元素,并返回该值。

  * public object removelast()  删除线性表的最后一个元素 ,并返回该值。

  * public void addfirst(object o)  将object o插入到链表的开头位置。  

  * public object addlast(object o)  将object o插入到链表的末尾位置

  * public boolean contains(object o)  检查object o是否存在链表中,如果存在返回true,不存在返回false

  * public int size() 返回线性表的元素个数

  * public boolean add(object o)  将object o插入到链表的末尾位置,并返回true

  * public boolean remove(object o) 将链表中第一次出现的元素删除,成功返回true,否则false;

  * public addall(collection c) 将collection c中的数据依次插入到链表的末尾

  * public addall(int index,collection c) 将collection c中的数据依次插入到链表的index位置,并将index位置之后的元素依次插入到collection c之后,链接成一个完整的线性表

  * public void clear() 删除线性表中的所有元素

  * public object get(int index) 返回线性表的index位置的元素

  * public object set(int index, object element) 以object element取代线性表index位置的元素

  * public void add(int index,object element) 将object element插入到线性表index位置之后。

  * public object remove(int index) 删除线性表中的index位置的元素

  * public int indexof(object o)返回object o在线性表中第一次出现的位置,若不存在返回-1

  * public int lastindexof(object o)返回object o在线性表中最后一次出现的位置,若不存在返回-1

  * public listiterator listiterator(int index)返回线性表index位置开始的元素的内容

  使用抽象数据类型(ADT)定义线性表如下:

  ADT list{

    数据对象:D={ai|ai属于元素集合,i=1,2,....n,n>=0}

    数据关系:R={<ai-1,ai>|ai-1,ai属于元素集合,i=1,2,....n,}

    基本操作:{

    就是以上的那些操作

    }

  }

2.2 线性表的顺序表示和实现

  线性表的存储结果分为书序存储和非顺序存储。顺序存储也称为向量存储或一维数组存储。

  1.顺序表(向量存储,一维数组存储),线性表中节点存放的物理顺序和逻辑顺序完全一致。

  

  2.顺序表基本运算的实现

  线性表顺序存储的结构容易实现存取数据元素,插入或删除数据元素比较繁琐

  

时间: 2024-12-20 13:53:41

第二章 线性表的相关文章

数据结构期末复习第二章线性表

第二章:线性表 1.线性结构的基本特征答:线性结构是若干数据元素构成的有序(次序)集① 集合中必存在唯一的一个“第一元素”:② 集合中必存在唯一的一个 “最后元素”:③ 除第一元素之外,均有 唯一的前驱:④ 除最后元素之外,均有 唯一的后继. 2.线性表的顺序存储结构和链式存储结构分别是______.(  D )   A. 顺序存取的存储结构.顺序存取的存储结构  B. 顺序存取的存储结构.随机存取的存储结构   C. 随机存取的存储结构.随机存取的存储结构  D. 随机存取的存储结构.顺序存取

数据结构之第二章线性表之静态链式存储

1--特点:用一维数组来描述线性表,用游标代替指针指示节点在数组中的相对位置.不设“指针”类型的高级语言中适用链表结构. 2--线性表的静态链式存储结构 ////  静态单链表.h//  单链表的静态存储//// 6 //  Copyright (c) 2014年 dashuai. All rights reserved.// #ifndef SLIST_H#define SLIST_H#include <stdio.h>#include <stdlib.h> #define MA

第二章——线性表

线性表 一.定义 线性表是最常用且最简单的一种数据结构. 简而言之,一个线性表是n个数据元素的有限的序列. 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的 (注意,这句话只适用大部分线性表,而不是全部.比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了首位结点).by~百度百科 二.线性表的顺序表示和实现 1.顺序表示指的是用一组地址连续的储存单元依次储存线性表的数据元素. 通常用数组来

数据结构之第二章线性表之链式存储

1~~特点:逻辑上相邻的元素,他的物理位置不一定相邻,其实几乎是不像邻的.表中的元素只能顺序访问,插入,删除等操作只需修改指针而不需要移动元素,存储空间利用率高,表的容量可以动态变化.适合个数变化大的情况. 2--链式存储`的存储结构 typedef struct Node{ int data; struct Node *next; }NODE,*PNODE; 3~~线性表的基本操作 (1)线性表的的  插表头  建立算法 ” 插表头“方式得到的线性链表,元素存储的顺序和输入顺序相反,这与栈的特

数据结构之第二章线性表

1 线性表的顺序存储 (1)线性表的顺序存储特点:逻辑上相连的元素,物理位置也相连.可随机访问表中元素,表中的存储位置可以用一个简单的,直观的公式表示,但是插入和删除都要移动大量的元素,效率不高,适合元素个数变化不大的情况,此时,如数据元素按照一定的顺序存储,则称为顺序存储的有序表,简称为    静态表. (2)线性表的动态分配顺序存储结构 typedef struct{ Elemtype *elem; //存储空间起始地址 int length; //当前长度 int listsize; //

数据结构总结 第二章 线性表 抽象数据类型的具体实现

#include<stdio.h> #include<stdlib.h> #include<iostream> #define MAXSIZE 1000 #define ERROR 0 #define OK 1 using namespace std; typedef int Status; typedef int ElemType; /////////////线性表定义(顺序表)//////////////////////// typedef struct { Ele

《数据结构与算法》第二章 线性表

线性表 定义: 由n个特性相同 数据元素(即可有很多数据项)构成的有限序列,同时相邻数据元素之间存在 序偶 关系. 线性表中元素个数就是 表长 . 特点: ·存在唯一一个被称为 “第一个” 的数据元素(线性起点.起始结点): ·存在唯一一个被称为 “最后一个” 的数据元素(线性终点.终端结点): ·除第一个以外,结构中的每个数据元素均 只有一个前驱 : ·除最后一个外,结构中的每个数据元素均 只有一个后继 . 顺序表示和实现 线性表的顺序表示指的是用一组地址连续的存储单元一次存储线性表的数据元素

数据结构之第二章线性表~~继续

(3)顺序表的查找 int locatlink(PNODE head,int e,int (*compare)(int ,int )) {//在head中查询第一个满足条件的元素的位置,若不存在,则返回-1 i: while(i<head.length&&!(*compare)(head.elem[i],e)) ++i; if(i<head.length) return i; else return -1; } 有序表的合并 void hebing(PNODE head1,PN

第二章 线性表2(链接表)

3.5.2 链接表接口 链接表可以看成是一组结点序列以及基于结点进行操作的线性结果的抽象,或则说是对链表的抽象. 链接表的接口: 1 package com.datastructure.chapter03.interfaces; 2 3 import com.datastructure.chapter03.exception.InvalidNodeException; 4 import com.datastructure.chapter03.exception.OutOfBoundaryExce