数据结构笔记1 线性表-顺序表示
预定义:
一、线性表的顺序表示
一些操作:
1. 线性表的初始化(参数为引用)
//下列:函数返回类型 函数名称初始化线性表 参数表(参数类型 引用参数)
Status InitList_Sq(SqList &L) {
//构造一个空的线性表L.elem = New ElemType[MAXSIZE]; //动态分配L.elem的内存,类型为ElemType,个数为MAXSIZE//也可以写://L.elem = (ElemType*)malloc(sizeof(ElemType)*MAXSIZE];if(!L.elem) //如果分配的地址值为空,则意味着分配失败exit(OVERFLOW); //exit(x)(x不为0)都表示异常退出,此时为-2 具体见链接//异常处理 L.length = 0; //初始化的线性表长度为0return OK; //成功,返回1
}
C语言中的exit()函数_春卷同学的博客-CSDN博客_c语言exit
https://blog.csdn.net/Rex_WUST/article/details/88372481
2.销毁线性表(参数为引用)
void DestroyList(SqList &L){if(L.elem) delete L.elem; //释放存储空间。要先判断是否存在。//delete: C++的语法。//C:free(L.elem);
}
3.清空线性表
Status ClearList(SqList &L){L.length = 0; //将线性表长度置0
}
4.求线性表的长度
Status GetLength(SqList L){ // 这里并不需要对L进行修改return(L.length);
}
5.判断线性表长度
int IsEmpty(SqList L){if(L.length == 0) return 1;else return 0;
}
6.顺序表的取值(随机存取),根据位置i获取相应位置数据元素的内容
int GetElem(int i,SqList L,int &e){if(i<1 || i>L.length) return ERROR;//异常处理,判断i是否合理e = L.elem[i-1]; //第i个元素对应下标i-1(第i-1的单元存储着第i个数据)return OK;
}
其算法复杂度是常量阶O(1),只执行一次。
7.按值查找元素
int LocateElem(SqList L,ElemType e){
//在线性表L中查找值为e的数据元素,返回其序号(是第几个元素)for(int i=0; i<L.length; i++)if(L.elem[i] == e) return i+1; //查找成功,返回序号return 0; //查找失败,返回0
}//用while语句实现
int LocateElem(SqList L,ElemType e){
//在线性表L中查找值为e的数据元素,返回其序号(是第几个元素)int i=0;while(i<L.length && L.elem[i] != e) i++;if(i<L.length) return i+1;return 0; //查找失败,返回0
}
时间复杂度:
基本操作:L.elem[i] == e,比较次数不定,取决于要查找的值
平均查找长度ASL:
∴T(n)=O(n)
8.顺序表的插入
算法思想:
Status ListInsert_Sq(SqList &L, ElemType e, int i) {if (i<1 || i>L.length ) return ERROR; //i值不合法if (L.length == MAXSIZE) return ERROR; //当前存储空间已满for(int j = L.length-1; j>=i-1; j--) //j是数组下标L.elem[j+1] = L.elme[j]; //插入位置以及之后的元素后移L.elem[i-1] = e; //放入新元素,第i个下标为i-1L.length++; //表长加一return OK;
}
复杂度O(n)
9.顺序表的删除
Status ListDelete_Sq(Sq List &L, Elem Type &e,int i){if (i<1 || i>L.length) return ERROR; //i不合法 e = L.elem[i-1];for(int j = i; j<=L.length-1; j++) //被删除的元素之后的元素前移L.elem[j-1] = L.elem[j];L.length--; //表长减一return OK;
}
数据结构笔记1 线性表-顺序表示相关推荐
- 2.数据结构笔记学习--线性表基本操作
线性表的结构定义: 顺序表的结构定义: typedef struct {int data[maxSize]; //存放顺序表元素的数组,一般用 int A[maxSize];int length; / ...
- rsa算法c语言实现_数据结构与算法之线性表-顺序表实现(C语言版本)
原文托管在Github: https://github.com/shellhub/blog/issues/52 数据结构与算法之线性表-顺序表实现(C语言版本) 前言 数据结构与算法是一个程序员必备的 ...
- 【数据结构和算法笔记】线性表的查找(平均查找长度,二分法,判定树)
查找: 给定一个值k,在含有n个元素的表中找出关键字等于k的元素,若找到,则查找成功,否则,查找失败 查找前首先确定(1)存放数据的数据结构是什么(2)元素是否有序 动态查找表:查找的同时做修改操作( ...
- 大话西游之王道考研数据结构第一讲---线性表的顺序表示
大话西游之王道考研数据结构第一讲---线性表的顺序表示 写在前面的话 王道考研数据结构是一本非常好的书,本系列所有的内容是按照其书进行讲述的,所以您可以以那本书作为主要内容,这个做参考. 大学时候,在 ...
- c语言构造一个空线性表l,数据结构线性表顺序结构的定义与实现C语言-Go语言中文社区...
大家好,今天给大家总结了一下数据结构里面的线性表的顺序结构,顺序表表示的是用一组地址连续的存储单元依次存储线性表的数据元素,所以顺序结构的实现一般采用数组的方式来实现,存储空间也采用动态分配的方式.在 ...
- Algorithms_基础数据结构(04)_线性表之链表_单向循环链表约瑟夫环问题
文章目录 大纲图 链表的经典面试题目 如何设计一个LRU缓存淘汰算法 约瑟夫问题 结构 分析 大纲图 链表的经典面试题目 如何设计一个LRU缓存淘汰算法 tip:单向链表 约瑟夫问题 N个人围成一圈, ...
- 王道408数据结构——第二章 线性表
文章目录 一.线性表的定义和基本操作 线性表 顺序表 1.插入操作 2.删除操作 3.按值查找(顺序查找) 二.单链表 1. 头插法 2. 尾插法 3. 按序号查找 4. 按值查找 5. 插入结点 6 ...
- Java版数据结构与算法——线性表
*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如 ...
- 数据结构复习题(线性表)
数据结构复习题(线性表) 线性表 选择题 填空题 判断题 解答题 顺序表的插入和删除 单链表的插入与删除,创建 线性表 选择题 用单链表方式存储的线性表,存储每个节点需要两个域,一个是数据域,另一个是 ...
最新文章
- java笔试之简单密码
- 【Linux】一步一步学Linux——dir命令(了解)(25)
- build.xml引用其它文件的任务
- 分布式计算第四章 RMI
- glibc版本查看_[译] 写一个简单的内存分配器(替换glibc中的malloc函数)
- Android中Dialog的使用
- netty 使用阻塞发送_大数据、分布式都用到了的Netty,这几大核心知识你一定要看看!...
- linux csi 摄像头,A20 linux(dragonboard)同时使用Parallel CSI Camera及UVC
- tuple list 结构结合record的应用实例
- java web在线题库管理系统(包含对学生,老师,课程,班级的管理)源码
- Base16,Base32,Base64编码详细学习
- 解决谷歌disabled状态下操作问题
- 10月24日程序员HTML5,【通知】10月24日程序员节放假1天
- 计算机应用基础网课试题及答案2020,2019-2020年度公共课计算机应用基础考试试题附答案(5页)-原创力文档...
- Python爬取煎蛋网图片
- Scrapy crawl 爬虫运行出错解决方法
- 淡季累库,黑色短期高位震荡看待(20210104).PDF
- 全球DAG区块链联盟会议——问答(一)
- 上海个人所得税缴费明细查询攻略
- 超详细MapReduce程序实现WordCount案例