记录学习数据结构书籍<<大话数据结构>>的学习笔记。

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

#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语言实现)相关推荐

  1. 线性表的顺序存储结构(C语言版)

    #include <stdio.h> #include <stdlib.h>#define OK 0 #define ERROR -1 // 分配存储空间的初始长度 #defi ...

  2. 《数据结构》c语言版学习笔记——线性表的顺序存储结构

    线性表的顺序存储结构 第一章 线性表的顺序存储结构 文章目录 线性表的顺序存储结构 前言 一.顺序存储结构的建立 1.条件 2.代码 二.顺序存储结构的获得元素 1.条件 2.代码 三.顺序存储结构的 ...

  3. c语言实现顺序存储程序,线性表的顺序存储结构动态态分配C语言实现

    线性表的顺序存储结构动态态分配C语言实现 线性表的顺序存储结构动态态分配C语言实现 初始化执行期间通过malloc函数为数组申请空间,程序运行期间若空间不够可通过realloc函数在保留原存储值的前提 ...

  4. 【数据结构】线性表的顺序存储结构及实现——C语言版

    文章目录 顺序表 1. 顺序表的存储结构定义 2. 顺序表的实现 2.1 初始化顺序表 2.2 建立顺序表 2.3 销毁顺序表 2.4 判空操作 2.5 求顺序表的长度 2.6 遍历操作 2.7 按值 ...

  5. 线性表:2.线性表的顺序存储结构--顺序表及C语言实现

    逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为 线性表的顺序存储结构 . 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中, ...

  6. 线性表的顺序存储结构(C语言讲解)

    目录 1.顺序存储结构定义 线性表顺序储存的结构代码 数组长度与线性表的长度的区别 2.顺序存储结构获得元素操作 3.顺序存储结构插入操作 4.顺序存储结构删除操作 5.完整代码举例 1.顺序存储结构 ...

  7. 数据结构和算法:(3)3.1线性表的顺序存储结构

    -----------------------1.线性表基础操作------------------------ 线性表:(List)由零个或多个数据元素组成的有限序列. 首先他是一个序列,元素之间是 ...

  8. 线性表之顺序存储结构相关算法学习

    作为一名准备干一辈子的程序员,学习算法还是很有必要的.所以从基础开始了.学习教材 是大话数据结构. 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素.代码 参照教材 采用c ...

  9. 数据结构之线性表之顺序存储结构(3)

    1 前言 经过前两张的理论基础,我相信大家都能简单的明白了数据结构和算法一些常用的概念了,从今天开始我们开始学习数据结构中线性表,一起叩响数据结构的大门. 2 详述 线性表(List):零个或者多个数 ...

最新文章

  1. Quartz1.X中CronTrigger第一次启动的问题
  2. 【观点见解】解读大数据的5个误区
  3. SQL syntax-log2
  4. 第43讲:灵活好用的 Spider 的用法
  5. 每周.NET前沿技术文章摘要(2017-05-24)
  6. Asp.Net ListView 控件的使用
  7. Intel 64/x86_64/IA-32/x86处理器段寄存器 - 32位段寄存器/64位段寄存器
  8. Java进阶:SpringMVC中获取web.xml中的全局参数
  9. @@Autowired依赖注入先后顺序
  10. Gambit建模中split的用法
  11. 股票交易数据接口是什么?
  12. 51单片机流水灯从原理图到PCB转化
  13. ssis 链接mysql_SSIS 连接数据
  14. win10更改无线网卡的MAC地址
  15. centos搭建samba服务
  16. 计算机设备管理cmd命令,打开设备管理器的命令,教你一分钟学会最简单
  17. pon终端测试仪_6304-PON终端测试仪报价_测试仪-北京海富达科技有限公司
  18. 《15个提高Google搜索的技巧》
  19. Blockchain Empowered Asynchronous Federated Learning for Secure Data Sharing in IoV
  20. 什么是堆、栈?堆和栈的区别

热门文章

  1. 性价比高的骨传导蓝牙耳机,推荐几款性能高的骨传导耳机
  2. 「生态化反」下的微信,不再克制了
  3. 无法上架“苹果应用商店”的情况下,怎么分发APP?
  4. 关于NLP中的文本预处理的完整教程
  5. 实在智能RPA机器人:你相信光吗
  6. php httponly_php中如何设置cookie_httponly
  7. whole-genome-sequencing Data Analysis 学习笔记2 软件安装
  8. 一个女人究竟该花多少钱?
  9. 学习笔记-ARIMA模型
  10. 台电X6 pro 黑苹果 Big Sur