线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

故可以用数组来实现顺序存储结构。

用C++编写的利用数组实现简单的读取、插入和删除功能的线性表。

#include<iostream>
#define MAXSIZE 20
#define OK 1
#define ERROR 0
#define TURE 1
#define FALSE 0
typedef int Status;
typedef int ElemType;
class SqList{
public:
SqList():length(1) {
for (int x=0;x<MAXSIZE;x++)
data[x]=0;
}
ElemType data[MAXSIZE];
int length;
Status ShowElem() const;
Status GetElem(int i, ElemType *e) ;
Status ListInsert(int i,ElemType e);
Status ListDelete(int i,ElemType *e);
};
Status SqList::ShowElem() const
{
int k;
if (length==0)
return ERROR;
std::cout<<"当前线性表内容为:"<<std::endl;
for (k=1;k<=length;k++)
std::cout<<data[k-1]<<" 、 ";
std::cout<<std::endl;
return OK;
} Status SqList::GetElem(int i,ElemType *e)
{
if (length==0 || i<1 || i>length)
return ERROR;
*e=data[i-1];
return OK;
} Status SqList::ListInsert(int i,ElemType e)
{
int k;
if (length==MAXSIZE)
return ERROR;
if (i<1 || i>length)
return ERROR;
if (i<=length)
{
for (k=length-1;k>=i-1;k--)
data[k+1]=data[k];
}
data[i-1]=e;
length++;
return OK;
} Status SqList::ListDelete(int i,ElemType *e)
{
int k;
if (length==0)
return ERROR;
if (i<1 || i>length)
return ERROR;
*e=data[i-1];
if (i<length)
{
for (k=i-1;k<=length-1;k++)
data[k]=data[k+1];
}
length--;
return OK;
}

线性表顺序存储结构的优缺点:

一、优点

1、在存、读数据时,不管是哪个位置,时间复杂度都是O(1)。

2、无须为表示表中元素之间的逻辑关系而增加额外的存储空间。

二、缺点

1、插入和删除时,需要移动大量元素,时间复杂度都是O(n)。

2、当线性表长度变化较大时,难以确定存储空间的容量。

3、造成存储空间的“碎片”。

C++编程练习(1)----“实现简单的线性表的顺序存储结构“的更多相关文章

  1. 线性表的顺序存储结构——java

    线性表的顺序存储结构:是指用一组地址连续的存储单元一次存放线性表的元素.为了使用顺序结构实现线性表,程序通常会采用数组来保存线性中的元素,是一种随机存储的数据结构,适合随机访问.java中ArrayL ...

  2. 数据结构4:顺序表(线性表的顺序存储结构)及C语言实现

    逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为线性表的顺序存储结构. 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中,之间 ...

  3. 2.2_线性表的顺序存储结构_参考集合ArrayList

    [线性表的顺序存储从结构] 指的是用一段连续的存储单元一次储存线性表的数据元素. [线性表的顺序存储的结构代码 C语言版] #define MAXSIZE 20 /*存储空间初始分配量*/ typed ...

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

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

  5. c数据结构 -- 线性表之 顺序存储结构 于 链式存储结构 (单链表)

    线性表 定义:线性表是具有相同特性的数据元素的一个有限序列 类型: 1:顺序存储结构 定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构 算法: #include <stdio. ...

  6. c语言数据结构之线性表的顺序存储结构

    线性表,即线性存储结构,将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构,简称线性表. 注意:使用线性表存储的数据,要求数据类型必须一致,线性表存储的数据,要么全不 ...

  7. 线性表之顺序存储结构(C语言动态数组实现)

    线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...

  8. C++编程练习(2)----“实现简单的线性表的链式存储结构“

    单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素. 对于查找操作,单链表的时间复杂度为O(n). 对于插入和删除操作,单链表在确定位置后,插入和删除时间仅为O(1). 单链表不需要分配存储 ...

  9. C++编程练习(5)----“实现简单的循环队列的顺序存储结构“

    队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 队列是一种先进先出(First In First Out)的线性表,简称FIFO.允许插入的一端称为队尾,允许删除的一端 ...

随机推荐

  1. MediaScanner

    http://blog.csdn.net/hellofeiya/article/details/8255898 http://www.cnblogs.com/halzhang/archive/2011 ...

  2. JSON串行化

    大多数情况下,我们不会再Javascript中直接创建JSON字符串.而是,创建一些Javascript对象,这些对象和服务器上的.net对象对应.因此,可以在服务器上创建.net实体类,然后串行化成 ...

  3. js获取光标位置

    js获取光标位置   var TT = { /* * 获取光标位置 * @Method getCursorPosition * @param t element * @return number */ ...

  4. Linux下Nginx、PHP、MySQL、Redis开机自启动设置

    一.Nginx开机启动设置 1.在/etc/init.d/目录下创建脚本 vi /etc/init.d/nginx 2.更改脚本权限 chmod 775 /etc/init.d/nginx 3.编写脚 ...

  5. Arduino线程库ProtoThreads

    参考: Arduino线程库ProtoThreads 一个“蝇量级” C 语言协程库

  6. JS实现标签页效果(配合css)不同标签下对应不同div

    显示页面tab.jsp </ div ></ body > </ html >   tab.css ul ,li { margin:0px; padding:0px ...

  7. builds error

    使用cocoapods 出现Undefined symbols for architecture i386: _OBJC_CLASS_$_XXXXXXX", referenced from: ...

  8. JQuery checkbox全选多次点击后无效解决方法

    1. jquery设置checkbox时: <input type="checkbox" id="ckAll"/> $(function(){ va ...

  9. 2017-01-11小程序form表单提交

    小程序form表单提交 1.小程序相对于之前的WEB+PHP建站来说,个人理解为只是将web放到了微信端,用小程序固定的格式前前端进行布局.事件触发和数据的输送和读取,服务器端可以用任何后端语言写,但 ...

  10. 转载自前端开发:CSS设置滚动条样式

    浏览器默认的滚动条样子太过屌丝了,得自己动手整整.记得IE浏览器有几个设置滚条的样式,不过比较鸡肋,只能设置颜色之类的,而且webkit下面也不支持.无意间看到网易邮箱的滚动条样子很好看,一开始以为是 ...