线性结构------线性表(一)
时间:2022-06-17
本文章向大家介绍线性结构------线性表(一),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
线性表的相关概念:
------线性表(Linear List)由有限个类型相同的数据元素组成,除了第一个元素和最后一个元素外,其他元素都有唯一的前驱元素和唯一的后继元素。
------表中元素个数成为线性表的长度。
------线性表没有元素时成为空表。
------表起始位置成为表头,结束位置成为表尾。
线性表的抽象数据类型描述:
数据对象集合:
{a1,a2,a3,... ,an},每个元素类型为DataType,除了a1和an外每个元素都只有一个前驱元素一个后继元素,数据元素之间的关系是一对一。
基本操作集合:
(1)void InitList(List *L):初始化一个空线性表表
(2)DataType FindByNum(int k, List L):查找线性表中第K位的元素,返回该元素
(3)int FindByElem(DataType e,List L):在线性表中查找元素X第一次出现的位置,返回该位置
(4)void Insert(List L, int i, DataType e):在线性表中第i个位置上插入元素e
(5)void Delete(List L, int i):删除线性表中第i个位置上的元素
(6)int Lengh(List L):返回线性表长度
(7)void PrintList(List L):打印线性表
线性表的实现:
一、顺序实现
#define MAXSIZE 20
typedef int DataType;
typedef struct
{
DataType data[MAXSIZE];
int len;
}SeqList;
(1)初始化空顺序表
//初始化(建立空的顺序表)
void InitList(SeqList *L)
{
L->len = 0;
}
(2)查找
//按位置查找(i非下标)
DataType FindByNum(int i, SeqList L)
{
for(int j = 0; j < i; j++)
return L.data[j];
}
//按元素查找(返回元素第一次出现的下标)
int FindByElem(DataType e, SeqList L)
{
int i = 0;
while(i < L.len && L.data[i] != e)
i++;
if(i >= L.len)
return -1;
return i;
}
(3)插入(注意移动时要从最后一个开始移动, i是元素位置,不是下标)
void Insert(DataType e, int i, SeqList *PtrL)
{
int j;
if(PtrL->len == MAXSIZE)
printf("The list is full.n");
if(i < 1 || i > PtrL->len + 1)
printf("Wrong place.n");
if(i <= PtrL->len)
{
for(j = PtrL->len - 1; j >= i - 1; j--)
{
PtrL->data[j + 1] = PtrL->data[j];
}
}
PtrL->data[i - 1] = e;
PtrL->len++;
}
(4)删除(注意移动要从i开始,i是元素的位置,不是下标)
void Delete(int i, SeqList *PtrL)
{
int j;
if(PtrL->len == 0)
printf("Empty.n");
if(i < 1 || i > PtrL->len)
printf("Wrong place.n");
for(j = i; j < PtrL->len; j++)
{
PtrL->data[j - 1] = PtrL->data[j];
}
PtrL->len--;
}
(5)打印
void PrintList(SeqList L)
{
for(int i = 0; i < L.len; i++)
printf("%d ", L.data[i]);
printf("n");
}
(6)长度
int Length(SeqList L)
{
return L.len;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android TV 开发之 TV视频播放器
- Android MediaPlayer 音乐播放器扫描 本地音乐、上一曲、下一曲切歌、播放本地音乐
- 1小时真正掌握正则表达式
- Android Studio 安装配置教程 - Windows(详细版)
- Android 天气APP(八)城市切换 之 自定义弹窗与使用
- Android 接入udesk SDK实现IM
- Android 天气APP(十二)空气质量、UI优化调整
- Python+selenium 自动化-调用dom节点的click()监听事件,强力操作节点!穿透元素进行点击,节点被遮挡不可点击解决方法
- pkl是什么类型的文件?怎么来打开它?
- Python 技术篇-如何查看文本用什么类型的编码,文本编码查看方法
- Elasticsearch:设置 Elastic 账户安全
- Git存管代码,实例演示
- Git 技术篇-GitHub绑定本地Git,实例演示。实现代码云寄存
- Android 天气APP(十三)仿微信弹窗(右上角加号点击弹窗效果)、自定义背景图片、UI优化调整
- Python 微信机器人:识别消息来源于群聊还是个人