数据结构 C语言 2.1 线性表抽象数据类型 2.2 小议顺序表

简介: 数据结构 C语言 2.1 线性表抽象数据类型 2.2 小议顺序表

一、线性表抽象数据类型

定义:零个或多个数据元素的有限序列

线性表的特点:

1.它是一个序列

数据元素之间是有序的

数据元素之间是一对一的关系

2.有限性

线性表的数据元素个数是有限的

注意:零个数据元素的有限序列又被称为空表

线性表常见的操作

1.创建和初始化、2.查找、3.删除、4.插入、5.清空

抽象数据类型定义:

ADT SequenceList

Data

   1.线性表数据元素是一个集合{a_1,a_2,a_3,...,a_n};//数据元素的类型是DataType

   2.除了第一个元素外,每个元素有且只有一个直接的前驱元素

   3.除了最后一个元素外,每个元素有且只有一个直接地后继元素

   4.每个数据元素之间的关系是一对一的关系

Operation

       1.初始化线性表:InitList(*List,int data)        创建一个空的线性表

       2.插入:InsertElement(*List,index,elem)        在线性表List的index下标处插入元素elem

       3.删除:DeleteElement(*List,index,*elem)        删除线性表List中第i个元素,并返回删除元素的指针e

       4.查找:GetElem(*List,index,*elem)        返回线性表中第i个位置的数据元素给e

       5.求长度:GetLength(*List)        返回线性表中的元素个数

       6.判空:IsEmpty(*List)        若线性表为空,返回TRUE,否则返回FALSE

endADT

       7.清空:ClearList(*List)        将线性表清空

二、小议顺序表

线性表的顺序存储示意图如下:

线性表的顺序存储结构,值得是用一段地址连续的存储单元依次存储线性表的数据元素

线性表的定义

position 元素的位置 从1开始        index 元素的下标 从0开始

1.我们需要定义线性表的最大存储空间

#define MAX_SIZE 255

2.线性表里需要有统一类型的元素集合

typedef ElemType;
typedef struct{
    int id;
    char name;
}ElenmType;

3.定义顺序表的结构

typedef struct{
    ElementType datas[MAX_SIZE];
    int length;
};

4.描述线性表的顺序存储结构:

       存储空间的起始位置:数组datas的存储位置

       线性表的最大存储容量:数组长度MAX_SIZE

       线性表的当前长度:length

线性表中顺序表地址的计算方式


地址从0到n-1

*(datas + 0);
*(datas + 1);
......
*(*datas+n-1);

 


目录
相关文章
|
9月前
|
存储 程序员 编译器
C 语言中的数据类型转换:连接不同数据世界的桥梁
C语言中的数据类型转换是程序设计中不可或缺的一部分,它如同连接不同数据世界的桥梁,使得不同类型的变量之间能够互相传递和转换,确保了程序的灵活性与兼容性。通过强制类型转换或自动类型转换,C语言允许开发者在保证数据完整性的前提下,实现复杂的数据处理逻辑。
|
7月前
|
存储 人工智能 程序员
一文彻底搞清楚C语言的数据类型和变量
本文介绍了数据类型(基本、构造、指针、空类型)、变量(使用、命名规则、作用域)和常量(字面、符号、枚举、表达式),帮助初学者理解编程基础概念。坚持学习,定能创造奇迹!
700 1
一文彻底搞清楚C语言的数据类型和变量
|
7月前
|
定位技术 C语言
c语言及数据结构实现简单贪吃蛇小游戏
c语言及数据结构实现简单贪吃蛇小游戏
|
8月前
|
搜索推荐 C语言
数据结构(C语言)之对归并排序的介绍与理解
归并排序是一种基于分治策略的排序算法,通过递归将数组不断分割为子数组,直到每个子数组仅剩一个元素,再逐步合并这些有序的子数组以得到最终的有序数组。递归版本中,每次分割区间为[left, mid]和[mid+1, right],确保每两个区间内数据有序后进行合并。非递归版本则通过逐步增加gap值(初始为1),先对单个元素排序,再逐步扩大到更大的区间进行合并,直至整个数组有序。归并排序的时间复杂度为O(n*logn),空间复杂度为O(n),且具有稳定性,适用于普通排序及大文件排序场景。
|
8月前
|
存储 算法 测试技术
【C++数据结构——线性表】求集合的并、交和差运算(头歌实践教学平台习题)【合集】
本任务要求编写程序求两个集合的并集、交集和差集。主要内容包括: 1. **单链表表示集合**:使用单链表存储集合元素,确保元素唯一且无序。 2. **求并集**:遍历两个集合,将所有不同元素加入新链表。 3. **求交集**:遍历集合A,检查元素是否在集合B中存在,若存在则加入结果链表。 4. **求差集**:遍历集合A,检查元素是否不在集合B中,若满足条件则加入结果链表。 通过C++代码实现上述操作,并提供测试用例验证结果。测试输入为两个集合的元素,输出为有序集合A、B,以及它们的并集、交集和差集。 示例测试输入: ``` a c e f a b d e h i ``` 预期输出:
207 7
|
8月前
|
机器学习/深度学习 存储 C++
【C++数据结构——线性表】单链表的基本运算(头歌实践教学平台习题)【合集】
本内容介绍了单链表的基本运算任务,涵盖线性表的基本概念、初始化、销毁、判定是否为空表、求长度、输出、求元素值、按元素值查找、插入和删除数据元素等操作。通过C++代码示例详细解释了顺序表和链表的实现方法,并提供了测试说明、通 - **任务描述**:实现单链表的基本运算。 - **相关知识**:包括线性表的概念、初始化、销毁、判断空表、求长度、输出、求元素值、查找、插入和删除等操作。 - **测试说明**:平台会对你编写的代码进行测试,提供测试输入和预期输出。 - **通关代码**:给出了完整的C++代码实现。 - **测试结果**:展示了测试通过后的预期输出结果。 开始你的任务吧,祝你成功!
313 5
|
8月前
|
机器学习/深度学习 存储 C++
【C++数据结构——线性表】顺序表的基本运算(头歌实践教学平台习题)【合集】
本文档介绍了线性表的基本运算任务,涵盖顺序表和链表的初始化、销毁、判定是否为空、求长度、输出、查找元素、插入和删除元素等内容。通过C++代码示例详细展示了每一步骤的具体实现方法,并提供了测试说明和通关代码。 主要内容包括: - **任务描述**:实现顺序表的基本运算。 - **相关知识**:介绍线性表的基本概念及操作,如初始化、销毁、判定是否为空表等。 - **具体操作**:详述顺序表和链表的初始化、求长度、输出、查找、插入和删除元素的方法,并附有代码示例。 - **测试说明**:提供测试输入和预期输出,确保代码正确性。 - **通关代码**:给出完整的C++代码实现,帮助完成任务。 文档
182 5
|
8月前
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
218 1
|
9月前
|
数据库
数据结构中二叉树,哈希表,顺序表,链表的比较补充
二叉搜索树,哈希表,顺序表,链表的特点的比较
数据结构中二叉树,哈希表,顺序表,链表的比较补充
|
9月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
371 8