线性表Linearlist
顺序存储,链式存储,索引存储,散列存储
基本运算
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的更多相关文章
- 线性表的顺序存储结构之顺序表类的实现_Java
在上一篇博文——线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构——顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...
- 线性表接口的实现_Java
线性表是其组成元素间具有线性关系的一种线性结构,对线性表的基本操作主要有插入.删除.查找.替换等,这些操作可以在线性表的任何位置进行.线性表可以采用顺序存储结构和链式存储结构表示. 本接口的类属于da ...
- 线性表(List)
1.什么是线性表(List)? 零个或多个数据元素的有限序列. (1)元素之间是有序的. (2)线性表强调是有限的. 2.线性表有哪些操作? (1)线性表的创建和初始化,InitList (2)判空, ...
- 数据结构C线性表现实
linearList.h #ifndef _INC_STDIO_8787 #define _INC_STDIO_8787 #include <stdio.h> #include <m ...
- c++ 用模板类实现顺序储存的线性表
首先要注意的一点是模板类在VS中编译时如果将定义和声明分开会出现无法解析的问题,所以一般比较常见的解决的办法是将声明和定义放在同一个头文件中然后统一的调用,下面就是用模板类实现线性表的编写 #prag ...
- 线性表源码分享(c++),包含顺序表、单链表、循环链表、双向链表
---恢复内容开始--- 我是一个c++和数据结构的初学者,本文主要是把清华大学出版社的数据结构(用面向对象方法与c++语言描述)(第2版)这本书中第二章线性表的源码抄下来,在学习的过程中有助于加深印 ...
- [C++]使用vector描述线性表定义及基本操作
#ifndef VECTORLIST_H #define VECTORLIST_H #include<iostream> #include"linearlist.h" ...
- 数据结构(Java描述)之线性表
基础概念 数据结构:是相互之间存在一种或多种关系的数据元素的集合. 逻辑结构和物理结构 关于数据结构,我们可以从逻辑结构和物理结构这两个维度去描述 逻辑结构是数据对象中数据元素之间的关系,是从逻辑意义 ...
- JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表
Unit04: 集合框架 . 集合操作 -- 线性表 操作集合元素相关方法 package day04; import java.util.ArrayList; import java.util.Co ...
随机推荐
- 初步学习border-radius
1.属性解析 border-radius是css3属性,他可以使div的角进行一定程度的弯曲. 比如说下面这个width和height的正方形div 经过设置border-radius之后四个角会出现 ...
- input placeholder属性 样式修改(颜色,大小,位置)
placeholder属性 样式修改 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- strncpy函数使用
strncpy()函数原型:extern char *strncpy(char *dest, char *src, int n); 用法:#include <string.h> ...
- 【总结】使用WebBrowser遇到的陷阱
一.前言 一直想用WebBrowser做一些好玩的东西,比如抓取分析感兴趣的网站页面.自动点击提交页面等,所以最近在研究WebBrowser.WebBrowser的功能十分强大,就是一个微型的Brow ...
- 检测对象是否为数组 instanceof
[1,2] instanceof Array //true Object.prototype.toString.apply([]); === "[object Array]"; O ...
- ng-class结合三目运算
ng-class文档:https://docs.angularjs.org/api/ng/directive/ngClass 但是在实际项目中可能会用到三目运算,实例如下: <ul> &l ...
- 图片懒加载jquery lazyload
<script type="text/javascript" src="jquery-1.11.3.min.js"></script>& ...
- Django基础,Day6 - 单元测试tests
在django项目app目录下,有个tests.py,我们通常可以直接在这文件中写我们的单元测试代码. test for a model 根据前面章节的操作步骤下来,在Question Model中有 ...
- std::unique_lock<std::mutex> or std::lock_guard<std::mutex> C++11 区别
http://stackoverflow.com/questions/20516773/stdunique-lockstdmutex-or-stdlock-guardstdmutex The diff ...
- 百度地图JavaScript API [一]
参考网址: http://developer.baidu.com/map/index.php?title=jspopular/guide/widget 1.申请密钥(ak) http://api.ma ...