顺序存储,链式存储,索引存储,散列存储

基本运算

SLIST

       
1.置空表 void SetNull(&L)    
2.求长度 int Length(L)    
3.取元素 ElemType Get(L,i) 取第i个位置的元素  
4.取前驱 ElemType Prior(L,x) 取元素值x的直接前驱  
5.取后继 ElemType Next(L,x) 取元素值x的直接后继  
6.定位函数 int Locate(L,x) 查找值为x的位置  
7.插入 void Insert(&L,x,i) 在第i个位置插入值为x的元素  
8.删除 void Dele(&L,i) 删除第i个位置上的元素  

顺序存储:

const int M=Maxlen;//线性表的最大长度
class Sequenlist
{
public :
elemtype a[M];
int len; int length(sequenlist L); void Insert(sequenlist &L,elemtype x,int i);
void Dele(sequenlist &L,int i);
void SetNull(sequenlist &L); int Locate(sequenlist L,elemtype x);
elemtype Get(sequenlist L,int i);
elemtype Prior(sequenlist L,elemtype x);
elemtype Next(sequenlist L,elemtype x);
} //求长度
int sequenlist::length(sequenlist L)
return L.len;
//置空
void sequenlist ::SetNull(sequenlist &L)
L.len=0; //取元素
elemtype sequenlist::Get(sequenlist L,int i)
{
if((i<0)||(i>L.len))
return NULL:
else
return L.a[i];
}
//定位
int sequenlist::Locate(sequenlist L,elemtype x)
{
int i=0;
while((i<L.len)&&(L.a[i]!=x))
i++;
if(i<L.len) return i;
else return -1;
} //插入
//1、超过表长,溢出,不能插入
//2、i值非法,不能插入 void sequenlsit::Inset(sequenlist &L,elemtype x,int i)
{
int j;
if(L.len>=M-1)
cout<<"overflow"<endl;
else if((i<1)||(i>L.len+1))
cout<<"position is not correct"<<endl;
else{
for(j=L.len;i>=i;j—)
L.a[j+1]=L.a[j]; //元素后移
L.a[i]=x;//插入元素
L.len++;//表长加1
}
} //删除
void sequenlist ::Dele(sequenlist &L,int i)
{
int j;
if((i<1)||(i>L.len+1))
cout<<"position is not correct"<<endl;
else{
for(j=i+1;j<=L.len:j++)
L.a[j-1]=L.a[j];//元素前移覆盖
L.len--;
}
}
//动态分配,指针
class sequenlist
{
public:
elemtype *a;
int len;
...
}
//置空需要修改
void sequenlist::SetNull(sequenlist &L)
{ L.a=new elemtype[M];//动态申请存储单元
if(L.a==NULL) exit(1);//申请失败
L.len=0;
}

线性表Linearlist的更多相关文章

  1. 线性表的顺序存储结构之顺序表类的实现_Java

    在上一篇博文——线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构——顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...

  2. 线性表接口的实现_Java

    线性表是其组成元素间具有线性关系的一种线性结构,对线性表的基本操作主要有插入.删除.查找.替换等,这些操作可以在线性表的任何位置进行.线性表可以采用顺序存储结构和链式存储结构表示. 本接口的类属于da ...

  3. 线性表(List)

    1.什么是线性表(List)? 零个或多个数据元素的有限序列. (1)元素之间是有序的. (2)线性表强调是有限的. 2.线性表有哪些操作? (1)线性表的创建和初始化,InitList (2)判空, ...

  4. 数据结构C线性表现实

    linearList.h #ifndef _INC_STDIO_8787 #define _INC_STDIO_8787 #include <stdio.h> #include <m ...

  5. c++ 用模板类实现顺序储存的线性表

    首先要注意的一点是模板类在VS中编译时如果将定义和声明分开会出现无法解析的问题,所以一般比较常见的解决的办法是将声明和定义放在同一个头文件中然后统一的调用,下面就是用模板类实现线性表的编写 #prag ...

  6. 线性表源码分享(c++),包含顺序表、单链表、循环链表、双向链表

    ---恢复内容开始--- 我是一个c++和数据结构的初学者,本文主要是把清华大学出版社的数据结构(用面向对象方法与c++语言描述)(第2版)这本书中第二章线性表的源码抄下来,在学习的过程中有助于加深印 ...

  7. [C++]使用vector描述线性表定义及基本操作

    #ifndef VECTORLIST_H #define VECTORLIST_H #include<iostream> #include"linearlist.h" ...

  8. 数据结构(Java描述)之线性表

    基础概念 数据结构:是相互之间存在一种或多种关系的数据元素的集合. 逻辑结构和物理结构 关于数据结构,我们可以从逻辑结构和物理结构这两个维度去描述 逻辑结构是数据对象中数据元素之间的关系,是从逻辑意义 ...

  9. JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表

    Unit04: 集合框架 . 集合操作 -- 线性表 操作集合元素相关方法 package day04; import java.util.ArrayList; import java.util.Co ...

随机推荐

  1. 【转】线程及同步的性能 - 线程池 / ThreadPoolExecutors / ForkJoinPool

    线程池和ThreadPoolExecutors 虽然在程序中可以直接使用Thread类型来进行线程操作,但是更多的情况是使用线程池,尤其是在Java EE应用服务器中,一般会使用若干个线程池来处理来自 ...

  2. echarts-在现实标题中显示百分比

    如图:需要在标题显示所占百分比 使用方式:途中标记部分 series : [{ name: '类型', type: 'pie', radius : '55%', center: ['50%', '60 ...

  3. PRINCE2风险模块

    我们前几个节学习了PRINCE2七大主题的商业论证.组织.质量和计划,今天我们开展对于风险模块的讲解. 风险:目的是识别.评估和控制不确定性,从而提高项目的成功率.PRINCE2对风险登记册进行了详细 ...

  4. 安装Windows10,Ubuntu双系统14.04LTS记录

    参考链接:http://www.jianshu.com/p/2eebd6ad284d(推荐直接看这个链接,我也是看这篇博客装的)然后自己记录一下,防止以后找不到了 本记录是在Windows10 上安装 ...

  5. Mysql 如何批量插入百万行测试数据

    Mysql 如何批量插入百万行测试数据

  6. Codeforces 710F String Set Quries

    题意 维护一个字符串的集合\(D\), 支持3种操作: 插入一个字符串\(s\) 删除一个字符串\(s\) 查询一个字符串\(s\)在\(D\)中作为子串出现的次数 强制在线 解法 AC自动机+二进制 ...

  7. [bigdata] 从Cloudera Manager中彻底删除服务器

    1. 在CM中主机页里,选定要删除的服务器,选择操作“从群集中删除”. 2. 登录到主机,执行chkconfig,显示有cloudera-scm-agent服务, 执行service cloudera ...

  8. CCS应用中常见的一些小技巧

    在单片机开发中,通常需要精确估算代码运行时间,用于对算法优化以及对项目平台选择提供参考,通常算法如果用汇编编写,可以人工计算出运行时间,用C语言编写也可以通过反汇编代码而计算到较为精确的运行时间,但当 ...

  9. Linux 安装与配置 mysql 环境

    Centos系统,可以提前将这些工具包安装上: # yum -y install gcc libxml2-dev curl screen \libpng12-dev autoconf libpcre3 ...

  10. linux shell 用sed命令在文本的行尾或行首添加字符

    转自 http://www.cnblogs.com/aaronwxb/archive/2011/08/19/2145364.html 昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed ...