顺序表

  • 是用一段地址连续的存储单元依次存储线性表的数据元素。
  • 通常用一维数组来实现

基本操作:

  • 初始化
  • 销毁
  • 求长
  • 按位查找
  • 按值查找
  • 插入元素
  • 删除位置i的元素
  • 判空操作
  • 遍历操作

示例代码:


//声明.h
const int MAXSIZE = 100; template<typename dataType>
class SeqList {
public:
SeqList(); //无参构造
SeqList(dataType a[], int length); //有参构造
~SeqList();
int seqlist_Length();
dataType get_i(int i); //查找第i位的元素
int search_x(dataType x); //查找值为x的元素
void insert_x(int n, dataType x); //在第n位插入值位x的元素
dataType delete_i(int i); //删除第i位元素
void print_list();
private:
dataType data_[MAXSIZE];
int length_;
};
//定义.h
#include<iostream>
using std::cout;
using std::endl; template<typename dataType>
inline SeqList<dataType>::SeqList()
{
length_ = 0;
} template<typename dataType>
inline SeqList<dataType>::SeqList(dataType a[], int length)
{
if (length > MAXSIZE)
{
throw"长度非法";
}
for (int i = 0; i < length; ++i)
{
data_[i] = a[i];
}
length_ = length;
} template<typename dataType>
inline SeqList<dataType>::~SeqList()
{} template<typename dataType>
inline int SeqList<dataType>::seqlist_Length()
{
return length_;
} template<typename dataType>
inline dataType SeqList<dataType>::get_i(int i)
{
if (i > length_ || i < 1)
{
throw"查找位置不存在";
}
else
{
return data_[i - 1];
} } template<typename dataType>
inline int SeqList<dataType>::search_x(dataType x)
{ for (int i = 0; i < length_; ++i)
{
if (data_[i] == x)
{
return i + 1;
}
}
return 0;
} template<typename dataType>
inline void SeqList<dataType>::insert_x(int n, dataType x)
{
if (length_ == MAXSIZE)
{
throw"表已满";
}
if (n >= length_ + 1 || n<1)
{
throw"插入位置非法";
}
for (int i = length_; i >= n; i--)
{
data_[i] = data_[i - 1];
}
data_[n - 1] = x;
++length_;
} template<typename dataType>
inline dataType SeqList<dataType>::delete_i(int i)
{
if (length_ == 0)
{
throw"表为空";
} if (i<1 || i>length_)
{
throw"删除位置非法";
}
int x = data_[i - 1];
for (int j = i; j < length_; j++)
{
data_[j - 1] = data_[j];
}
length_--;
return x;
} template<typename dataType>
inline void SeqList<dataType>::print_list()
{
for (int i = 0; i < length_; i++)
{
cout << data_[i];
}
cout << endl;
}
//main.cpp
#include"announced.h" int main()
{
return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

数据结构---顺序表(C++)的更多相关文章

  1. hrbustoj 1545:基础数据结构——顺序表(2)(数据结构,顺序表的实现及基本操作,入门题)

    基础数据结构——顺序表(2) Time Limit: 1000 MS    Memory Limit: 10240 K Total Submit: 355(143 users) Total Accep ...

  2. hrbust-1545-基础数据结构——顺序表(2)

    http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1545 基础数据结构——顺序表(2) ...

  3. c数据结构 顺序表和链表 相关操作

    编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include& ...

  4. 数据结构顺序表删除所有特定元素x

    顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] ...

  5. 数据结构顺序表Java实现

    Java实现顺序表算法:1:首先我们需要定义我们的接口,关于顺序表的一些基本的操作:顺序表中的操作都有增删改查. //List接口 public interface IList { //返回线性表的大 ...

  6. python算法与数据结构-顺序表(37)

    1.顺序表介绍 顺序表是最简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以快速定位第几个元素,中间不允许有空,所以插入.删除时需要移动大量元素.顺序表可以分配一段连续的存储空间 ...

  7. 数据结构——顺序表(sequence list)

    /* sequenceList.c */ /* 顺序表 */ /* 线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表中的各项数据元素,用这种存储形式的线性表称为顺序表. */ #in ...

  8. 数据结构顺序表中Sqlist *L,&L,Sqlist *&L

    //定义顺序表L的结构体 typedef struct { Elemtype data[MaxSize]: int length; }SqList; //建立顺序表 void CreateList(S ...

  9. Java数据结构——顺序表

    一个线性表是由n(n≥0)个数据元素所构成的有限序列. 线性表逻辑地表示为:(a0,a1,…,an-1).其中,n为线性表的长度,n=0时为空表.i为ai在线性表中的位序号. 存储结构:1.顺序存储, ...

随机推荐

  1. C语言结构体的强制类型转换

    陈浩师兄03年的一篇博客<用C写有面向对象特点的程序>描述了用C语言来实现类似C++类继承的方法,这样方法的核心要点就是结构体的强制类型转换,让我来简单分析分析C语言中的结构体强制类型转换 ...

  2. logstash-input-file 参数说明

    参数 close_older close_older: # This has different implications depending on if a file is being tailed ...

  3. [ImportNew]Java中的并发处理

    本文来源:http://www.importnew.com/14506.html 这篇文章讨论了Java应用中并行处理的多种方法.从自己管理Java线程,到各种更好几的解决方法,Executor服务. ...

  4. 关于git的打patch的功能

    UNIX世界的软件开发大多都是协作式的,因此,Patch(补丁)是一个相当重要的东西,因为几乎所有的大型UNIX项目的普通贡献者,都是通过 Patch来提交代码的.作为最重要的开源项目之一,Linux ...

  5. 快递查询api(多接口方案)

    /** 本环境使用php+smarty,结合两种快递api调取快递数据 * 说明,先快递鸟调取数据,失败后再调取快递网的数据* 快递鸟 http://www.kdniao.com 快递网 http:/ ...

  6. hdu 1095 A+B for Input-Output Practice (VII)

    A+B for Input-Output Practice (VII) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32 ...

  7. 【转】周末班LR笔记总结—新手入门必备

    本来想上传文件的,上传半天没反应,只有这样了,图片不知道能显示不. 上午 学到2012.1.13 七天课 第一天(入门)二.三.四天(VUGEN脚本) 五天(Controller)六天(Analyse ...

  8. 聊聊css盒子模型

    css盒子模型原理: 在网页设计中常听的属性名:内容(content).填充/内边距(padding).边框(border).外边距(margin), CSS盒子模式都具备这些属性. 这些属性我们可以 ...

  9. Android MVP架构浅析

    Android之MVC模式 MVC好处: 从用户的角度出发,用户可以根据自己的需求,选择自己合适的浏览数据的方式.比如说,对于一篇在线文档,用户可以选择以HTML网页的方式阅读,也可以选择以pdf的方 ...

  10. OJ——华为编程题目:输入字符串括号是否匹配

    package t0815; /* * 华为编程题目:输入字符串括号是否匹配 * 若都匹配输出为0,否则为1 * 样例输入:Terminal user [name | number (1)] * 样例 ...