线性表实验

一、实验目的

1.掌握线性表的顺序存储结构

2.验证顺序表及其基本操作的实现

3.理解算法与程序的关系们能够将顺序表算法转换为对应的程序

二、实验步骤

1.建立含有若干个元素的顺序表

2.对已建立的顺序表实现插入、删除、查找等基本操作

代码如下

#include<iostream>
using namespace std;const int Max = 100;
class SeqList
{
public:SeqList(){ length = 0; }   SeqList(int a[], int n);  ~SeqList(){};  void Insert(int i, int x);   int Delete(int i);int Locate(int x);void PrintList();
private:int length;  int data[Max];
};
//有参构造函数
SeqList::SeqList(int a[], int n)
{if (n>Max)throw "参数非法";for (int i = 0; i<n; i++){data[i] = a[i];length = n;}
}
//在顺序表第i个位置插入值为x的元素
void SeqList::Insert(int i, int x)
{if (length >= Max) throw"上溢";if (i<1 || i>length + 1) throw "位置非法";else{for (int j = length; j >= i; j--){data[j] = data[j - 1];  //第j个元素存在数组下标为j-1处}data[i - 1] = x;length++;}
}
//删除顺序表的第i个元素
int SeqList::Delete(int i)
{if (length == 0) throw"下溢";if (i<1 || i>length) throw "位置非法";else{int x = data[i - 1];for (int j = i; j<length; j++){data[j - 1] = data[j];}length--;return x;}
}
//求线性表中值为x的元素序号
int SeqList::Locate(int x)
{for (int i = 0; i<length; i++){if (data[i] == x) return i + 1;}return 0;
}
//遍历函数
void SeqList::PrintList()
{for (int i = 0; i<length; i++){cout << data[i] << " ";cout << endl;}
}
//主函数
void main()
{   //操作前遍历int r[5] = { 1, 2, 3, 4, 5 };SeqList L(r, 5);cout << "执行操作前的数据为:" << endl;L.PrintList();//插入数据L.Insert(2,7);cout << '\n' << "插入位置2数字7后顺序表的内容为:" << endl;L. PrintList();//删除数据int k;cout << '\n' << "请输入需要删除的数据序号:";cin >> k;cout << "删除成功!你所删除的数据为:" << L.Delete(k) << endl;cout << "顺序表的内容为:" << endl;L.PrintList();  //按值查找int y;cout << '\n' << "请输入要查找的数据:";cin >> y;cout << "你所查找的值所在的位置为:" << L.Locate(y) << endl;
}

实验结果

三、实验心得

Insert函数想写成用户自己输入数据这一点还要多修改,暂时只能做到利用写好的程序显示出来。

课本第一章课后习题0

4.(1)顺序表的优点是:无需为表中的元素之间的逻辑关系而增加额外的存储空间;可以快速地存取表中任一位置的元素(即随机存储)

顺序表的缺点是:插入和删除操作需移动大量元素;表的容量难以确定;造成存储空间的碎片

单链表的优点是:不必事先知道线性表的长度;插入和删除元素时只需修改指针,不用移动元素

单链表的缺点是:指针的结构性开销;存取表中任意元素不方便,只能进行顺序存取

(2)顺序存储结构;链接存储结构;链接存储结构

顺序表插入删除查找操作相关推荐

  1. 数据结构专题(一):1.3.顺序表插入删除

    如下代码: //插入元素:在指定的位置插入给定的值 //插入的位置为K:0 -- n-1 //顺序表:不满 //pList:目标顺序表,x待插入的元素,k插入的位置 int InsertElemSqL ...

  2. 顺序表的插入删除查找遍历

    顺序表的插入删除查找遍历 文章目录 顺序表的插入删除查找遍历 代码 运行结果截图 代码 #define Maxsize 100typedef int ElemType; typedef struct{ ...

  3. 数据结构之顺序表的删除、查找、遍历

    一.引言 本篇文章作为顺序表新的篇章延续上一篇文章(数据结构之顺序表构造.插入.扩容操作)的内容. 二.顺序表的删除.查找.遍历操作 注:代码实现均为C语言 1.顺序表的删除(erase)操作 当我们 ...

  4. 数据结构学习笔记:顺序表的删除操作及其演化题目总结

    目录 前言 例题 类似题目1 类似题目2 类似题目3 类似题目4 类似题目5 结语 前言 文章代码皆在Dev-C++ 5.11中测试,主要是总结一些方法,从而总结一些规律使自己进一步地深化学习内容,仅 ...

  5. C语言-数据结构-可变长顺序表的删除操作

    [问题描述] 实现可变长顺序表的删除算法.任务要求:通过顺序表的初始化.插入算法,创建顺序表.根据删除需求,删除指定的顺序表元素. [输入形式] 第一行输入整数N(1<=N<=100),M ...

  6. C语言实现建立顺序表,修改顺序表,插入顺序表,删除顺序表

    #include <stdio.h> #include <stdlib.h>#define OK 1 #define ERROR 0 #define OVERFLOW -2 # ...

  7. 顺序表-插入一个元素x后保持该顺序表L递增有序排序(查找+元素后移插入)

    顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 分析: 要保持插入一个元素后 ...

  8. 西南科技大学OJ题 顺序表插入操作的实现0943

    顺序表插入操作的实现 建立长度为n的顺序表,在指定的数据元素item之前插入数据元素data.如果指定的数据元素item不存在,则将data插入到顺序表的尾端.(数据类型为整型) 输入 第一行为顺序表 ...

  9. 数据结构C语言实现顺序表——增删查改操作实现详解

    顺序表 顺序表是什么? 顺序表是将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示.实现增删查改的功能. 顺序表所需的头文件: #include<stdio.h> ...

最新文章

  1. nginx转发请求_Nginx为什么高效?一文搞明白Nginx核心原理
  2. 物流机器人站上风口!未来市场增长获双引擎加持
  3. Python实现RGB和Lab颜色空间互转
  4. 2015年240个数据库引擎排名参考
  5. linux离线安装rjava,无法在ubuntu系统上安装rJava
  6. halcon机器视觉算法原理与编程实战_快速弄懂机器学习里的集成算法:原理、框架与实战...
  7. python导入pyecharts错误没有pyecharts_python报No module named 'pyecharts'的错误怎么办?
  8. 论文阅读04:Deep Triplet Hashing Network for Case-based Medical Image Retrieval
  9. 【报告分享】2021中国数据中台研究报告.pdf(附下载链接)
  10. qt制作位图led点阵_LED显示屏知识详细讲解
  11. Java之String,StringBuffer,StringBuilder比较
  12. 卡巴斯基KEY 、NOD32注册机——最新版
  13. 图书管理系统数据库设计实验报告
  14. 新版应急预案现场处置应急演练方案各行业应急处置方案(共289份,265M)
  15. 【Deep Learning 5】FNN前馈神经网络
  16. android缩放组件,Android控件实现图片缩放功能
  17. mac上的kindle打开mobi文件的方式
  18. 鼠标掠过显示图片的demo
  19. 【javascript-基础小练习】开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者体重是否合适
  20. 【selenium学习笔记】selenium自动化测试环境安装

热门文章

  1. DM数据库创建分区表并进行SQL LOAD
  2. 基于proteus软件仿真AT89C52的双机串口通信 附工程包
  3. H264编码器12( H264基本原理 --图文表达很清晰)
  4. 算法工程师的主要职责(合集)
  5. 统计并输出该字符串中26个英文字母
  6. 为什么3D游戏建模师就业要求越来越高的原因
  7. 一个屌丝程序员的青春(二零一)
  8. python怎么做软件开发有前途吗_Python程序员就业行情以及前景分析
  9. 技术员Windows11 64位 21H2专业版 v2022【装机助手】
  10. Photoshop中怎么把白色背景改为黑色背景