今天正好又是很闲,就简单实现一下数据结构里面的顺序线性表玩一下,后面有时间再慢慢把后面几种数据结构实现一下玩一下。

顺序线性表,就是在连续内存中元素按内存地址顺序排列的数据结构,本人用数组来实现的,因为数组就是连续分配的内存区域,所以比较好弄,加一个结构体。

现在上代码:

首先是头文件

#include "stdafx.h"
using namespace std;#define MaxSize 255 //定义数组最大长度typedef int datatype;typedef struct{datatype data[MaxSize];int length; //保存线性表的长度
}SeqList;//顺序线性表类
class Sequential{
public:Sequential();//构造函数~Sequential();//析构函数//查询操作datatype GetElemByPos(SeqList *L,int pos); //根据位置,返回元素值int GetElemByData(SeqList *L,datatype data); //根据元素值,返回第一个找到的元素的位置//插入操作bool InsertData(SeqList *L,int pos,datatype data);  //删除操作bool DeleteDataByPos(SeqList *L,int pos);//根据位置删除元素//返回线性表长度int getLength(SeqList *L);//查看是否为空bool isEmptySeqList(SeqList *L);//清空线性表数据bool clearSeqList(SeqList *L);
};

其次是cpp实现的文件代码:

#include "stdafx.h"
#include "SeqLineList.h"using namespace std;Sequential::Sequential(){
cout << "初始化构造函数";
}Sequential::~Sequential()
{cout << "delete 构造函数 "<<endl;
}//查找元素
//@param[in]:L:需要查找的线性表
//@param[in]:pos:查找的位置
//return:找到的元素值
datatype  Sequential::GetElemByPos(SeqList *L,int pos)
{int length = L->length; if (length == 0){cout << "当前线性表大小为0,不存在元素" <<endl;return 0;}else{if (pos > length || pos <= 0){cout << "pos值大于线性表的长度或pos值小于0,无法获取值元素"<<endl;return 0;}else{datatype cur_val = L->data[pos-1];return cur_val;}}
}//查找元素
//@param[in]:L:需要查找的线性表
//@param[in]:data:需要查找的元素值
//return:元素位置
int Sequential::GetElemByData(SeqList *L,datatype data)
{int length = L->length; if (length == 0){cout << "当前线性表大小为0,不存在元素" <<endl;return 0;}//查找元素(默认第一个元素就终止寻找,返回位置)for (int i = 0; i < length-1; i++){if (L->data[i] == data){cout << "找到元素,元素位置是"  << i+1<< endl;return i+1;}}cout << "未找到元素" << endl;return 0;
}//插入元素操作
//@param[in]:L:需要查找的线性表
//@param[in]:pos:需要插入的位置
//@param[in]:data:需要插入的元素值
//return:true:插入成功,false:插入失败
bool Sequential::InsertData(SeqList *L,int pos,datatype data)
{//先获取当前线性表的长度int length = L->length;if (length == MaxSize){cout << "线性表已满,无法插入元素了!";return false;}if (pos > length || pos < 0){cout << "位置超过长度,无法插入元素";return false;}//在pos元素末尾添加元素if (pos == length){L->data[length] = data;L->length = length +1;cout << "元素插入成功!" << endl;return true;}else{for (int i = length-1; i >= pos; i--){L->data[i+1] = L->data[i];}L->data[pos] = data;L->length  = length+1;cout << "元素插入成功!" << endl;}return true;
}//删除操作
//param[in]:L:需要删除的线性表
//param[in]:pos:删除的位置
//return: false:删除失败,true:删除成功
bool Sequential::DeleteDataByPos(SeqList *L,int pos)
{int length = L->length;//避免本身线性表就为空,那也删不了if (pos > length || pos < 1 || length == 0 ){cout << "长度超过length或者小于1,无法删除元素"<< endl;return false;}//pos等于length 只要删除最后一个元素即可if (pos == length){L->data[length-1] = L->data[length];L->length = length-1;cout << "删除元素成功" << endl;return true;}else{for (int i = pos-1; i< length; i++){L->data[i] = L->data[i+1];  }cout << "删除元素成功" << endl;L->length = length -1;}return true;
}//返回顺序线性表的长度
//@param[in]:L:需要查询的线性表
//return:线性表的长度
int Sequential::getLength(SeqList *L)
{return L->length;
}//判断线性表是否为空
//@param[in]:需要的线性表
//return:true:空,false:非空
bool Sequential::isEmptySeqList(SeqList *L)
{return L->length?false:true;
}//清空线性表
//@param[in]:L:需要清空的线性表
//return:true:清空成功,false:失败
bool Sequential::clearSeqList(SeqList *L)
{int length = L->length;if (length!=0){for (int i = length-1; i >=0; i--){L->data[i] = L->data[i+1];}L->length = 0;}return true;
}

然后用来测试这功能的代码:

// SequentialLinearList.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "SeqLineList.h"
using namespace std;int _tmain(int argc, _TCHAR* argv[])
{SeqList *test = new SeqList;test->length = 0;test->data;Sequential *sq =new Sequential();sq->InsertData(test,0,1);sq->InsertData(test,1,2);datatype cur_pos = sq->GetElemByPos(test,1);sq->DeleteDataByPos(test,1);bool isEmpty_dd = sq->isEmptySeqList(test);sq->DeleteDataByPos(test,1);int cur_data_pos =sq->GetElemByData(test,4);bool isEmpty = sq->isEmptySeqList(test);cout << cur_pos;//释放内存delete test;delete sq;return 0;
}

希望大家可以学会就是了 数据结构还是比较重要的

源码放在github上:https://github.com/huifeng-kooboo/DataStructure

主要当复习或者面试的时候 感觉写在github上比较好,正好也可以展示出来自己有会这些东西哈哈哈哈哈

C++数据结构01--顺序线性表实现相关推荐

  1. Algorithms_基础数据结构(01)_线性表之数组数组的应用案例分析

    文章目录 大纲图 数组的经典面试题目 数据结构三要素 数据逻辑结构(线性结构&非线性结构) 数据存储结构(顺序存储.链式存储.索引存储和散列存储) 顺序存储 链式存储 索引存储 散列存储 数据 ...

  2. 【数据结构】顺序线性表的构造和存储数据

    这是一个很简单的程序,但是写的过程中费了好大劲,主要是因为道行不深. ①:构造线性表: 1 typedef struct 2 { 3 int elem[maxsize]; 4 int last; 5 ...

  3. 【数据结构】除去线性表中的重复数字

    题目:写一个算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同. 刚看到这个题目给我第一个思路是冒泡排序,可以利用冒泡排序的两层循环找出相同的结点,然后free掉.第一层循环是控制循环的 ...

  4. 大话数据结构 01 :顺序线性表

    1.完整代码 #include "stdio.h" #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0#defi ...

  5. 用标准C语言初始化线性表,C语言数据结构-顺序线性表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作...

    1.数据结构-顺序线性表的实现-C语言 #define MAXSIZE 100 //结构体定义 typedef struct { int *elem; //基地址 int length; //结构体当 ...

  6. c语言visit_数据结构(c语言)——入门数据结构的世界:顺序线性表(一)

    前面说的话 提到数据结构,最出名的恐怕还是四大基本结构,分别是集合,线性结构,树形结构和图形结构. 本人只是一名普普通通的本科学生,学的东西比较基础,甚至有可能比较落伍,但作为所有国内高等学府相关专业 ...

  7. C语言实现数据结构顺序线性表

    大家好,我是胡阳阳 数据结构一直以来都是一门很难的学科 学数据结构时老师总讲的思想和伪代码 对于初学者来说很难写出对应的程序 下面我们来讲解如何才能自己写出顺序线性表的代码 首先顺序线性表是由数组来实 ...

  8. 大话西游之王道考研数据结构第一讲---线性表的顺序表示

    大话西游之王道考研数据结构第一讲---线性表的顺序表示 写在前面的话 王道考研数据结构是一本非常好的书,本系列所有的内容是按照其书进行讲述的,所以您可以以那本书作为主要内容,这个做参考. 大学时候,在 ...

  9. 数据结构之线性表:顺序线性表 Java 实现(底层基于数组)

    代码实现 package top.gldwolf.java.datastructure.lineartable;/*** 顺序线性表* @param <T> 存储的元素类型*/ publi ...

  10. 数据结构二:线性表的顺序结构实现

    此程序根据高一凡大神的源程序修改而成. /************************************************************* FileName:c2-1.h F ...

最新文章

  1. 对话框 函数_通过函数式编程实现动态对话框处理程序
  2. python最强脚本工具_8种常用的Python工具
  3. java gui中文变方块_150道Java面试基础题(含答案)
  4. php下的ssm模式,编码风格:Mvc模式下SSM环境,代码分层管理
  5. linux断点续传程序,Linux下怎么实现断点续传
  6. ASP.NET MVC4 乱七八糟罗列
  7. udp push java ddpush_DDPush首页、文档和下载 - 任意门推送 - OSCHINA - 中文开源技术交流社区...
  8. 随机生成姓名,姓名生成器
  9. 基于PHP的学生学籍管理系统
  10. 爬虫基础_01——正则
  11. 想要感受三星S8屏幕的震撼 先过APP适配这道坎
  12. 【踩坑记录】导航时出现原地旋转,然后无法执行导航
  13. 代购源码,淘宝代购系统源码,代购程序,代购系统源码PHP前端源码参数说明
  14. ubuntu14.04 安装skyeye
  15. 使用 Telnet 手动接收邮件 (基于 macOS 系统)
  16. 移动机器人下位机软件
  17. fiddler接口基础
  18. 爬虫项目:scrapy爬取昵图网全站图片
  19. 【机器人学】机器人开源项目KDL源码学习:(5)KDL如何求解几何雅克比矩阵
  20. Springboot 整合Websocket+Stomp协议+RabbitMQ做消息代理 实例教程

热门文章

  1. 阿里问题定位神器 Arthas 操作实践,定位线上BUG,超给力
  2. 感觉Swagger功能不够强大?knife4j这款神器了解一下....
  3. java(Hello World) 常量 变量和注意事项
  4. 【JAVA】 02-Java对象细节
  5. linux查看log软件
  6. PostCSS深入学习: PostCSS和Sass、Stylus或LESS一起使用
  7. 运算符的优先级表(从高到低)
  8. 【JNI知识一】--JNI接口函数与指针
  9. Repeater绑定ArrayList数据源
  10. 为memcached增加缓存依赖的程序实现