数据结构——线性表(1)

来源:互联网 发布:js json数组赋值 编辑:程序博客网 时间:2024/06/03 14:57

根据自己的学习笔记所整理出来的今天的所学内容
一 线性表的本质:
特征(1)是由0个或多个数据元素的集合
(2)数据元素之间有顺序
(3)数据元素个数有限
(4)数据元素类型必须相同
定义:具有相同类型的n(>=0)个元素之间的有序序列
小结:线性表是数据元素的有序并且有限集合
线性表中的数据元素必须是类型相同的
线性表能够逐项访问和顺序存取

线性表常用操作:
创建线性表 List* List_Create();
销毁线性表 void List_Destroy(List* list);
清空线性表 void List_Clear(List* list);
将元素插入线性表 int List_Insert(List* list,ListNode* node,int pos);
将元素从线性表中删除 ListNode* List_Delete(List* list,int pos);
获取线性表中某个位置的元素 ListNode* List_Get(List* list,int pos);
获取线性表的长度 int List_Length(List* list);

线性表在程序中表现为一种特殊的数据类型
线性表的操作在程序中表现为一组相关的函数

二 顺序存储结构
定义:线性表的顺序存储结构是指用一段地址连续的存储单元依次存储线性表的数据元素。
在c语言中可以用一维数组来实现顺序存储结构
存储空间起始位置:数组node
线性表的最大容量:数组长度MAXSIZE
线性表的当前长度:length

(1)获取元素操作
判断线性表是否合法
判断位置是否合法
直接通过数组下标的方式获取元素
获取元素操作
(2)插入元素算法
判断线性表是否合法
判断插入位置是否合法
把最后一个元素到插入位置的元素后移一个位置
将新元素插入
线性长度加1
插入元素操作
(3)删除元素操作
判断线性表是否合法
判断插入位置是否合法
将元素取出
将删除位置后的元素分别向前移动一个位置
线性长度减1
删除元素操作

三 链式存储结构
为了表示每个数据元素与其直接后继元素之间的逻辑关系,每个元素除了存储本身本身的信息外
还需要存储指示其直接后继的信息。
在C语言中可以用结构体来定义链表中的指针域
链表中的表头结点也可以用结构体实现
链式存储逻辑结构
n个结点连接成一个链式线性表的结构叫做链表
当每个结点中只包含一个指针域时,叫做单链表。
表头结点:链表中的第一个结点,包含指向第一个元素的指针以及链表自身的一些信息。
数据结点:链表中代表数据元素的节点,包含指向下一个数据元素的指针和数据元素信息
尾结点:链表的最后一个数据节点,其下一个元素指针为空,表示无后继。

原创粉丝点击