线性表的顺序存储结构(C语言实现)
记录学习数据结构书籍<<大话数据结构>>的学习笔记。
线性表的顺序存储结构:用一段地址连续的存储单元依次存储线性表的数据元素
#include "stdio.h"
#define MAXSIZE 20
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int ElemType; /*对应结构体的定义*/
typedef struct
{ElemType data[MAXSIZE];int length;
}SqList;/*获取线性表中的第i个元素*/
/*用e返回L中的第i个元素的值*/
Status GetElem(SqList L,int i,ElemType *e)
{if(L.length==0 || i<1 || i>L.length){return ERROR;}*e=L.data[i-1];return OK;
}/*在L中第i个位置之前插入新的元素e,L的长度为1*/
Status ListInsert(SqList *L,int i,ElemType e)
{int k;if (L->length==MAXSIZE) /*顺序线性表已经满*/{return ERROR; } if(i<1 || i>L->length+1) /*i不在范围内*/{return ERROR; }if(i<=L->length) /*插入数据位置不在表尾部*/{for(k=L->length-1;k>=i-1;k--) /*将要插入位置后的数据元素向后移动一位*/{L->data[k+1]=L->data[k]; } } L->data[i-1]=e; /*将新元素插入*/L->length++; return OK;
} /*删除第i个数据元素,并用e返回其值,L的长度减1*/
Status ListDelete(SqList *L,int i,ElemType *e)
{int k;if(L->length==0) /*线性表为空*/{return ERROR;}if(i<1||i>L->length) /*需要删除的位置不对*/{return ERROR; } *e=L->data[i-1]; /*记录需要删除元素*/if(i<L->length) /*需要删除的元素不是最后一位*/{for(k=i;k<L->length;k++) /*后面的元素依次向前移动*/{L->data[k-1]=L->data[k]; } } L->length--;return OK;
}/*遍历所有元素*/
void ListErgodic(SqList *L)
{int len=0;len = L->length;for(len=0;len<=L->length-1;len++){printf("第%d个元素是%d\r\n",len,L->data[len]); }
}/*测试案例*/
void main(void)
{SqList Q;int number;ListInsert(&Q,1,23); //插入一个元素 ListInsert(&Q,1,22); //插入一个元素 ListInsert(&Q,2,21); //插入一个元素 ListErgodic(&Q); //遍历所有元素 printf("当前的长度为%d\r\n",Q.length);ListDelete(&Q,2,&number); //删除第2个元素printf("当前的长度为%d\r\n",Q.length);printf("删除的元素是%d\r\n",number);
}
运行测试输出结果打印
线性表的顺序存储结构的优缺点:
优点:
1.可以快速存取表中任意位置的元素。
2.无需为表示表中元素之间的逻辑关系而增加额外的存储空间。
缺点:
1.插入和删除元素时,需要进行大量的数据移动操作。
2.当线性表长度变化较大时,难以确定存储空间的容量。
线性表的顺序存储结构(C语言实现)相关推荐
- 线性表的顺序存储结构(C语言版)
#include <stdio.h> #include <stdlib.h>#define OK 0 #define ERROR -1 // 分配存储空间的初始长度 #defi ...
- 《数据结构》c语言版学习笔记——线性表的顺序存储结构
线性表的顺序存储结构 第一章 线性表的顺序存储结构 文章目录 线性表的顺序存储结构 前言 一.顺序存储结构的建立 1.条件 2.代码 二.顺序存储结构的获得元素 1.条件 2.代码 三.顺序存储结构的 ...
- c语言实现顺序存储程序,线性表的顺序存储结构动态态分配C语言实现
线性表的顺序存储结构动态态分配C语言实现 线性表的顺序存储结构动态态分配C语言实现 初始化执行期间通过malloc函数为数组申请空间,程序运行期间若空间不够可通过realloc函数在保留原存储值的前提 ...
- 【数据结构】线性表的顺序存储结构及实现——C语言版
文章目录 顺序表 1. 顺序表的存储结构定义 2. 顺序表的实现 2.1 初始化顺序表 2.2 建立顺序表 2.3 销毁顺序表 2.4 判空操作 2.5 求顺序表的长度 2.6 遍历操作 2.7 按值 ...
- 线性表:2.线性表的顺序存储结构--顺序表及C语言实现
逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为 线性表的顺序存储结构 . 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中, ...
- 线性表的顺序存储结构(C语言讲解)
目录 1.顺序存储结构定义 线性表顺序储存的结构代码 数组长度与线性表的长度的区别 2.顺序存储结构获得元素操作 3.顺序存储结构插入操作 4.顺序存储结构删除操作 5.完整代码举例 1.顺序存储结构 ...
- 数据结构和算法:(3)3.1线性表的顺序存储结构
-----------------------1.线性表基础操作------------------------ 线性表:(List)由零个或多个数据元素组成的有限序列. 首先他是一个序列,元素之间是 ...
- 线性表之顺序存储结构相关算法学习
作为一名准备干一辈子的程序员,学习算法还是很有必要的.所以从基础开始了.学习教材 是大话数据结构. 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素.代码 参照教材 采用c ...
- 数据结构之线性表之顺序存储结构(3)
1 前言 经过前两张的理论基础,我相信大家都能简单的明白了数据结构和算法一些常用的概念了,从今天开始我们开始学习数据结构中线性表,一起叩响数据结构的大门. 2 详述 线性表(List):零个或者多个数 ...
最新文章
- nginx同IP、同端口、不同域名时的转发
- 003_Spring Data JPA分页和排序查询
- bash history 命令记录日志 实时发送到syslog server
- 2020-11-24
- python cx_oracle配置_python连接oracle的模块cx_Oracle安装和配置
- 如何修改TextView链接点击实现(包含链接生成与点击原理分析)
- ftk学习记(button篇)
- Pr 入门教程,如何创建标题?
- 概率论 马尔可夫 切比雪夫等定理的解释
- 搜索推荐评价指标Precision@k、Recall@k、F1@k、NDCG@k
- vba操作ie关闭窗口
- 关于偏度和峰度的解释(易错)
- requests 已过时,初探协程与异步 http 框架 httpx
- 【蓝桥杯】寒假真题大联赛(研究生/大学A组)
- ArrayList这篇就够了
- 思维导图SimpleMind mac版
- NLP接下来黄金十年-----周明等谈值得关注的NLP技术
- HTC G8 wildlife 玩转
- 微信开发从入门到精通教程大全 资料大全 java和php版本;教程文档、代码、视频 微信商城实例
- 什么是信息安全?什么是网络安全?什么又是计算机安全?