最近有时间学一些自己想学的,就找来看看数据结构。看的是大话数据结构。之前学数据结构是大一时候,现在看这个还可以,没那时候学的累。但是还是需要进行一些总结,以免自己会忘记。
虽然大部分和书上差不多,但是不自己动手敲,还是会有问题。或者有些地方自己这样写会好理解一些。

一.线性表顺序存储

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

接下来我们对线性表结构进行了解

#define MAXSIZE 200
typedef struct{Elemtype data[MAXSIZE];int length;
}Sqlist;

这里的长度指的是线性表长度,是线性表中数据元素的个数。我们对线性表进行操作,这个量是变化的。
其实线性表的顺序存储就是数组,但是这个长度是变化的,可以这么理解。

二.一些操作

1.初始化线性表

Sqlist *InitList(int n,int t)
{Sqlist *L;L = (Sqlist *)malloc(sizeof(Sqlist));L->length = n;for(int i = 0; i < n; i++)L->data[i] = t*i;return L;
}

这里的t是随便给的值,n是长度。

2.获得元素

Status GetElem(Sqlist *L,int i,Elemtype *e)
{if(i < 1 || i > L->length)return ERROR;if(L->length == 0)return ERROR;*e = L->data[i-1];return OK;
}

这里主要是记得要判断分界条件,不然有时候没输出会觉得很奇怪。

3.增加元素

Status InsertElem(Sqlist *L,int i,Elemtype e)
{int k;if(i < 1 || i > L->length)return ERROR;if(L->length ==0)return ERROR;for(k = L->length - 1;k >= i -1;k--)L->data[k+1] = L->data[k];L->length++;L->data[i-1] = e;return OK;
}

这里需要注意的是,从最后一个元素进行遍历,不然从前开始,中间的数都会被覆盖掉。还有别忘了改线性表长度。

4.删除元素

Status DeleteElem(Sqlist *L,int i,Elemtype *e)
{int k;if(i < 1 || i > L->length)return ERROR;if(L->length ==0)return ERROR;*e = L->data[i-1];for(k = i;k<L->length;k++)L->data[k-1] = L->data[k];L->length--;return OK;
}

这里和上面类似,不是很难理解。
下面是总体代码:

#include<stdio.h>
#include<stdlib.h> typedef int Status;
typedef int Elemtype;
#define MAXSIZE 20
#define OK 1
#define ERROR 0typedef struct{Elemtype data[MAXSIZE];int length;
}Sqlist;Sqlist *InitList(int n,int t)
{Sqlist *L;L = (Sqlist *)malloc(sizeof(Sqlist));L->length = n;for(int i = 0; i < n; i++)L->data[i] = t*i;return L;
}void PrintList(Sqlist *L)
{int i;for(i = 0;i < L->length ; i++)printf("%d  ",L->data[i]);printf("\n");
}
Status GetElem(Sqlist *L,int i,Elemtype *e)
{if(i < 1 || i > L->length)return ERROR;if(L->length == 0)return ERROR;*e = L->data[i-1];return OK;
}Status InsertElem(Sqlist *L,int i,Elemtype e)
{int k;if(i < 1 || i > L->length)return ERROR;if(L->length ==0)return ERROR;for(k = L->length - 1;k >= i -1;k--)L->data[k+1] = L->data[k];L->length++;L->data[i-1] = e;return OK;
}Status DeleteElem(Sqlist *L,int i,Elemtype *e)
{int k;if(i < 1 || i > L->length)return ERROR;if(L->length ==0)return ERROR;*e = L->data[i-1];for(k = i;k<L->length;k++)L->data[k-1] = L->data[k];L->length--;return OK;
}int main(void)
{Sqlist *L;Elemtype e;L = InitList(11,3);PrintList(L);//GetElem(L,7,&e);//printf("%d ",e);InsertElem(L,7,100);PrintList(L);DeleteElem(L,7,&e);PrintList(L);printf("%d",e);return 0;
}

三.线性表的优缺点


第一次用markdown,不是很适应,就用截图了。

线性表顺序存储的一些操作(初始化,添加,删除)相关推荐

  1. 线性表顺序存储结构操作算法

    线性表顺序存储结构操作算法 ** 顺序表的初始化 线性表的插入算法 线性表的删除算法 线性表的查找算法** 根据书本的知识线性表顺序存储结构的操作算法其实是我们刚进入数据结构与算法的必修课 其实算法无 ...

  2. 数据结构—线性表顺序存储插入和删除操作

    线性表的操作:1.InitList(*L):初始化操作,建立一个空的线性表L 2.ListEmpty(L):判断线性表是否为空,如果为空,返回true,否则返回false 3.ClearList(*L ...

  3. 第三章 线性表---顺序存储结构

    线性表(List):零个或多个数据元素的有限序列. 若将线性表记为(a1, ..., ai-1, ai , ai+1 , ..., an),则表中 ai-1 领先于ai , ai领先于ai+1,称ai ...

  4. 线性表定义 线性表顺序存储结构

    写在前面:本文章来自于在学习过程中的总结,供大家参考.因水平有限,博客中难免会有不足,恳请大佬们不吝赐教! 文章目录 线性表的定义 线性表的顺序存储结构 线性表顺序存储结构的优缺点 线性表的基本操作 ...

  5. 线性表顺序存储 - Java实现

    顺序结构存储实现 package com.kiger.Sequence;import java.util.Arrays;/*** @ClassName SequenceList* @Descripti ...

  6. 线性表-顺序存储结构

    线性表-顺序存储结构 线性表基本概念: 线性结构的基本特征为: 集合中必存在唯一的一个"第一元素": 集合中必存在唯一的一个 "最后元素" : 除最后元素在外, ...

  7. 关于数据结构链表问题(C语言实现)—— 线性表顺序存储设计与实现

    这是我的第一篇博客(内容为废话) 现在马上面临毕业的我,发现整理总结问题真的非常重要,刚刚开始学习数据结构,并且非科班出身的我,感觉得到压力非常大,所以开始学习完后在这进行回忆,复习学习.在这里要感谢 ...

  8. 数据结构线性表顺序存储结构和主要算法实现

    (1) 线性表的定义. 零个或多个数据元素的有限序列 序列线性表中有直接后继元素,有且仅有一个直接后继,有且仅有一个直接前驱,数据元素之间的关系是一对一的关系 常用的List操作: Operation ...

  9. 线性表顺序存储结构图书管理

    线性表顺序存储结构图书管理 一开始看书里面的线性表的顺序存储结构,感觉简单,觉得动态链表才能做出一点东西,但是顺序存储不仅于此,也能做出来.顺序结构相比链式结构,内容上有较大差异,各有难点 文章目录 ...

最新文章

  1. 2021年大数据ELK(三):Lucene全文检索库介绍
  2. WordPress添加固定位置的百度分享按钮
  3. 云管理成功的关键:应用工作流
  4. VTK:相互作用之MoveAGlyph
  5. python基本语法:元组
  6. JDK动态代理底层剖析
  7. TensorFlow2.0(三)--Keras构建神经网络回归模型
  8. java 堆排序算法_堆排序算法的讲解及Java版实现
  9. 20210314:力扣第 232 场周赛
  10. CSS优先级、CSS选择器、编写CSS时的注意事项
  11. css实现背景全透明样式
  12. ZK在ZUL页面使用HTML
  13. Android实现随意拖动View效果
  14. 实车路试注意事项(路试类)
  15. 软件测试-5-移动应用测试
  16. HTML——制作新闻网页
  17. 【数学建模论文】数学模型分析红楼梦作者
  18. mysql sql查询昨天的数据_sql语句,查询昨天的数据
  19. Gym 103117 Problem - Spicy Restaurant
  20. 全球与中国现代风格沙发市场前景动态及投资方向建议研究报告2022-2028年

热门文章

  1. 实现Gmail邮箱翻转效果之开篇
  2. shell批量修改文件名字 重命名 MD5+文件后缀
  3. rsa加解密 --- jsencrypt.min.js --- 支持长字符串分段加解密
  4. 类的继承层次结构的宽度和深度
  5. automotive industry is embracing change and agile transitioning
  6. C语言中变量的作用域和生命周期
  7. Bluetooth模块用于管理蓝牙设备,搜索附近蓝牙设备、实现简单数据传输
  8. 【转载】何时使用领域驱动设计
  9. 阿里云营收破百亿很牛?和AWS等全球头部厂商还差太多!
  10. COMP0037 Coursework