目录

前言

一、顺序表的结构

二、顺序表的初始化

三、基本操作

1.插入数据

2.删除数据

3.查找数据

总结


前言

顺序表是线性表的顺序存储结构的实现,基本操作有顺序表的初始化、插入、删除和查询。


一、顺序表的结构

由数据部分存储部分、数组实际使用大小和空间开辟大小。

#define LIST_SIZE 20
//数据部分结构
struct Data{int x;double y;
};          //顺序表的结构部分
typedef struct Node{Data* elem;          //用于动态分配
//  Data elem[LIST_SIZE];  //静态分配,由于固定大小不方便,故常使用上面的int length;int listsize;
}Sqlist;

二、顺序表的初始化

有两种分配空间的方式:静态分配固定空间和动态分配可变空间

#define LIST_SIZE 20
bool InitSqlist(Sqlist &L){L.elem = (Data *)malloc(LIST_SIZE * sizeof(Data));if(!L.elem)    return false;L.length = 0;                //若是静态分配只需要下面的部分L.listsize = LIST_SIZE;return true;
}

三、基本操作

1.插入数据

//按位插入
bool InsertList(SqList &L, int i, Data e){if( i < 1 || i > L.length+1 ) return false;if(L.length >= L.listsize){Data *m =(Data *)realloc(L.s,(List_Size+100)*sizeof(Data));if(!m) return false;L.listsize = List_Size+100;}Data *p = &(L.s[i-1]);for(Data *q = &(L.s[L.length-1]); q >= p; q--) *(q+1) = *q;*p = e;L.length++;return true;
}

2.删除数据

//删除数据,找到删除数据位置,从后往前覆盖
bool DeleteList(SqList &L, int i, Data &e){if( i < 1 || i > L.length ) return false;Data *p = &(L.s[i-1]);e = *p;for(Data *q = &(L.s[L.length-1]); p < q; p++)*p = *(p+1);L.length--;return true;
}

3.查找数据

void ShowList(SqList &L){if( L.length == 0 )printf("这是空表!\n");for(int i = 0; i < L.length; i++ ){printf("data[%d].x = %d\n", i , L.s[i].x);printf("data[%d].y = %lf\n", i , L.s[i].y);}
}

四、顺序表(数组)有关的一些经典问题

1.打印问题

(1)顺时针打印矩阵

分析:由全局到局部,找出打印规律,注意边界条件

1.二点确定一个矩形,依次向内移动左上点和右下点

2.每次对确定的矩阵,打印四条边(注意是否重复打印)

(2)Z字打印二维数组

分析:

可以按照题目逐次移动x,y打印

或者确定对角线两点,不断在这对角线来回打印

2.数组元素变换问题

(1)将0所在的行列清零

分析:利用二维数组记录需要清零的位置,避免修改原二维数组的元素为0,而导致数组全部清零(保留信息)

(2)方阵旋转

分析:逐层旋转四边对应位置的元素

(3)替换空格

3.数组查找问题

(1)二维数组查找

(2)数组中重复数字

(3)第一个只出现一次的字符位置

(4)找出边界为1的最大子方阵

分析:

从N阶开始,以左上点遍历二维数组

4.数组累加和问题

(1)子数组最大累加和

分析:

解法1:遍历初始起点,遍历结果点,暴力比较所有情况得到最大区间和

解法2:前缀和求和,对求和为正数,继续累加下一元素,对求和为负数,更新重新计算求和

(2)子矩阵最大累加和


总结

数组问题一般与其他问题混合在一起出现

数据结构与算法笔记——顺序表(数组)与矩阵相关推荐

  1. java数据结构与算法之顺序表与链表深入分析

    转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52953190 出自[zejian的博客] 关联文章: java数据结 ...

  2. (PTA数据结构与算法) 6-2 顺序表操作集 ——请告诉我什么是顺序表!!!

    6-2 顺序表操作集 (20 分) 本题要求实现顺序表的操作集. 函数接口定义: List MakeEmpty(); Position Find( List L, ElementType X ); b ...

  3. 数据结构与算法:顺序表和链表的常用操作 (很全,基本涵盖本章所有算法)

    文章目录 前言: 一.顺序表 二.链表 前言: 数据结构中的表操作算是里面较为简单的章节,但也比较重要,3月份学完的此章节,左思右想今天还是写篇 关于顺序表和链表的博客. ps : 复制代码可以在编译 ...

  4. 【数据结构与算法】顺序表V3.0的Java实现

    更新说明 经过了顺序表V1.0的根据接口编写成型.顺序表V2.0的功能大幅度增强,这里推出了顺序表V3.0,功能的丰富性不及V2.0,但加入了迭代器,代码的编写也更加的合理了,应该说是比较好的作品了. ...

  5. Python数据结构与算法(四)--顺序表

    顺序表 在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等.一组数据中包含的元素个数可能发生变化(可以增加或删除元素). 根 ...

  6. php算法结构,PHP数据结构与算法:顺序表

    一.概念 把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里,元素间的顺序关系由它们的存储顺序自然表示. 逻辑顺序与物理顺序一致 元素之间的关系以元素在计算机内的"物理位置相邻&qu ...

  7. 【数据结构与算法】顺序表的Java实现

    定义接口 首先定义一个接口,作为规范. 为了能够有更强的适用性,我们定义的泛型类. 提供的功能有: 遍历线性表并打印: 求线性表的长度: 按值查找: 按位查找: 在指定逻辑位置插入: 删除指定逻辑位元 ...

  8. 【数据结构与算法】顺序表V2.0的Java实现

    接口 public interface ISequentialList<T> {/*** 获取长度* @return*/int size();/*** 判空* @return*/boole ...

  9. Java数据结构和算法:字符串、数组和广义表

    数组和广义表是与前述的线性表有所区别的数据结构.它们可以看成是线性表在下述含义上的扩展:线性表中的元素本身也是一个数据结构 字符串 字符串的定义.存储结构 字符串(string)是由n (n≥0) 个 ...

最新文章

  1. 常用神经网络模型及其应用评述
  2. 用CSS美化被鼠标选中的文字的样式
  3. python3语音识别模块_零基础教你玩转语音控制,学习语音控制技术,打造智能生活很简单...
  4. 10.Object类
  5. 解决:vue 用 axios 发送请求,每次都会发送两次请求
  6. CodeForces 1065E. Side Transmutations 计数
  7. Unity中提升像素字体清晰度
  8. Go语言面向对象编程
  9. 12.用户和组账户管理
  10. 使用ERStudio创建数据表与ER图
  11. EDA第一次课<1117电路图的绘制>
  12. SqlServer2005 provider: TCP 提供程序, error: 0 - 由于目标计算机积极拒绝,无法连接。) (Microsoft SQL Server,错误: 10061)问题解决
  13. 22款受欢迎的计算机取证工具
  14. 项目开发 | 转载 | 需求评审与技术评审
  15. 关于阳明学“心即理”的浅显理解
  16. android 解决图片替换之后没有更新图片
  17. EI会议常见几个出版商出版刊物!
  18. MPLS隧道——单域基础理论讲解
  19. 京东与阿里要用区块链打击假货 造假将无可遁形
  20. 贪心法解决最小顶点覆盖

热门文章

  1. 维吉尼亚密码c语言实现
  2. 超级详细 的 Redis 安装教程
  3. Python爬虫之request模块
  4. Mysql出现问题:ERROR 1116 (HY000 (ER_TOO_MANY_TABLES)): Too many tables; MySQL can only use %d tabl解决方案
  5. scrollTop属性
  6. unity免费使用谷歌翻译(使用tk值,防止数量限制的错误)
  7. MFC atoi 函数
  8. 服装产业发展趋势|供应链|智能制造
  9. 优秀的简历,该这么写!(可领简历模板)
  10. windows下安装ubuntu linux子系统