C++编程练习(1)----“实现简单的线性表的顺序存储结构“
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
故可以用数组来实现顺序存储结构。
用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)----“实现简单的线性表的顺序存储结构“的更多相关文章
- 线性表的顺序存储结构——java
线性表的顺序存储结构:是指用一组地址连续的存储单元一次存放线性表的元素.为了使用顺序结构实现线性表,程序通常会采用数组来保存线性中的元素,是一种随机存储的数据结构,适合随机访问.java中ArrayL ...
- 数据结构4:顺序表(线性表的顺序存储结构)及C语言实现
逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为线性表的顺序存储结构. 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中,之间 ...
- 2.2_线性表的顺序存储结构_参考集合ArrayList
[线性表的顺序存储从结构] 指的是用一段连续的存储单元一次储存线性表的数据元素. [线性表的顺序存储的结构代码 C语言版] #define MAXSIZE 20 /*存储空间初始分配量*/ typed ...
- 线性表的顺序存储结构之顺序表类的实现_Java
在上一篇博文——线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构——顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...
- c数据结构 -- 线性表之 顺序存储结构 于 链式存储结构 (单链表)
线性表 定义:线性表是具有相同特性的数据元素的一个有限序列 类型: 1:顺序存储结构 定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构 算法: #include <stdio. ...
- c语言数据结构之线性表的顺序存储结构
线性表,即线性存储结构,将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构,简称线性表. 注意:使用线性表存储的数据,要求数据类型必须一致,线性表存储的数据,要么全不 ...
- 线性表之顺序存储结构(C语言动态数组实现)
线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...
- C++编程练习(2)----“实现简单的线性表的链式存储结构“
单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素. 对于查找操作,单链表的时间复杂度为O(n). 对于插入和删除操作,单链表在确定位置后,插入和删除时间仅为O(1). 单链表不需要分配存储 ...
- C++编程练习(5)----“实现简单的循环队列的顺序存储结构“
队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 队列是一种先进先出(First In First Out)的线性表,简称FIFO.允许插入的一端称为队尾,允许删除的一端 ...
随机推荐
- 关于bool和BOOL的区别
1.类型不同: BOOL是int类型,bool是布尔类型 2.长度不同: BOOL长度是其环境来定,一般是4个字节,因为其是int类型;bool长度为一个字节 3.取值不同: BOOL取值是FALSE ...
- VC#2010 视图设计器无法打开 问题的正解
继上次VC#2010中视图设计器无法打开的问题的讨论后,我感觉每次都重新安装一次安装包未免也太麻烦了,程序员的时间都灰常宝贵. 所以在这次人工智能作业的时候,找到了一个简单的途径: 打开VC#2010 ...
- [iOS Animation]-CALayer 视觉效果
视觉效果 嗯,圆和椭圆还不错,但如果是带圆角的矩形呢? 我们现在能做到那样了么? 史蒂芬·乔布斯 我们在第三章『图层几何学』中讨论了图层的frame,第二章『寄宿图』则讨论了图层的寄宿图.但是图层不仅 ...
- ZOJ 3929 Deque and Balls
答案=所有情况中总共递减次数*2 放完i个和放完i-1个之间的递减次数是可以递推的. 有一部分是放完i-1个之后产生的,还有一部分是放完第i个之后新产生的. 注意减去多加的部分. 2的i次方可以打个表 ...
- angular中的$http配置和参数
依赖:$httpBackend $cacheFactory $rootScope $q $injector 使用:$http(config); 参数: method:字符串,请求方法. url:字符串 ...
- spring 自动化构建项目
STS 3.7.0.RELEASE http://spring.io/tools/sts/legacy
- JS数字金额大写转换
/** 数字金额大写转换(可以处理整数,小数,负数) */ var digitUppercase = function(n) { var fraction = ['角', '分']; var digi ...
- mongodb学习(五) 查询
1. 按条件查询: db.users.find({"name":"MM1"}) 2.find的第二个参数可以指定要返回的字段:这里1 表示要显示的字段,0 表示 ...
- webgl 网站demo
网络上的一些经典的WebGL资源网站和WebGL开源引擎整理 http://www.babylonjs.com/ http://threejs.org/ http://www.finalmesh.co ...
- 微信和QQ网页授权登录
一:微信授权 //用户授权 public function is_weixin(){ $url = "https://open.weixin.qq.com/connect/oauth2/au ...