和小白一起学数据结构七之线性表的顺序结构及实现

本文介绍了线性表的逻辑结构和顺序存储结构,包括线性表的定义、运算及其在C语言中的实现。通过实例解析了如何用不多于3n/2的比较次数找到线性表中的最大值和最小值,以及如何将线性表分拆为正负元素两个子表。
摘要由CSDN通过智能技术生成

一起学数据结构之线性表(上)

博主正式开学了,课业压力很重,怕跟不上各位道友的期望,做不到每日一更,呜呜呜呜(抱头哭泣)~总而言之,博主会继续努力,一起加油!!加油!!!

关于数据结构的绪论部分,昨日已经跟大家总结过了。有道友问关于我们进度的问题,这个数据结构书上总共有二十讲。分别是绪论,线性表三讲,栈和队列两讲,串两讲,数组和广义表两讲,树和二叉树三讲,图两讲,动态储存管理,查找,内部排序,外部排序和文件。我们的前七讲主要在打基础,其实博主前不久回学校在火车上已经将广义表之前的部分看完了,知道我们后面要用到c语言的哪些操作,前七讲才能好好跟大家打基础这样子。

博主是个对自己百分之百不自信不满意的人,所以万事不做到能力范围内的最好是不可能开始尝试一件事的,即使开学学习压力较大,但博客的质量一定会有保证。每天最少是一讲,如果周六、周日英语和复变函数的学习安排的海绵里还有水,博主一定会尽可能做多做全面一些,就这样,我们开始今天的内容吧。

一、线性表的逻辑结构

(一)线性表的定义
  • 线性表的定义:线性表是一个具有n(n>=0)个数据元素的线性关系有限序列。元素的个数为线性表的长度,当n=0时,线性表为空表,用一对空括号表示;当n!=0时,线性表可以表示为(a1,a2,a3,…an),a1为表头元素,an为表尾元素,an-1是an的直接前驱,an+1是an的直接后继

  • 线性表的数据元素:可以为一个数,也可以为一个符号或者复杂数据类型,但同一个线性表中的元素必须具有相同的特性

  • 例如:
    线性表1:字母表(a,b,c…z)
    线性表2:数字表 (2,5,9,1,0)
    线性表2:线性表中数据元素为复杂类型的表

    姓名 学号 性别 出生年月 家庭住址 联系方式
    张三 061283 20190901 北京 133****1234
    李四 061284 20190831 上海 133****1124
    王五 061279 20170628 武汉 133****1109
  • 线性表的逻辑结构:线性表的逻辑结构为线性结构,元素之间是一对一的关系。

(二)线性表的运算

线性表的基本操作如下:

  • 初始化表:InitList(L),构造一个空的线性表.
  • 求表长:Length(L),返回表的长度,即表中元素的个数.
  • 取表中元素:GetElem(L,i),取表中元素,当i小于等于表长时返回表中元素,当i大于表长时返回一个特殊的值.
  • 取元素ai的直接前驱:PriorElem(L,x,pre_x),取表中元素x的直接前驱
  • 取元素ai的直接后继:NextElem(L,x,next_x),取表中元素x的直接后继
  • 定位:LocateElem(L,x),返回元素x在线性表里的位置,若list中存在多个x则只返回第一个x的位置,若list中不存在x则返回0.
  • 插入元素:ListInsert(L,i,x),在线性表list中的某一位置I插入元素x,运算结果使得表长加一。
  • 删除元素:ListDelete(L,i),在线性表list中的某一位置上删除此元素,此运算的前提条件是表长不为0,此时运算结果为表长减一。
  • 判断表空:Empty(L),判断表是不是空表,若是则返回“true",若不是则返回”false“。
  • 表置空操作:Clear(L),已知线性表是空表或非空表,此操作是将list置为空表。
  • 输出线性表:PrintList(L),按前后顺序输出线性表内的所有元素。

二、线性表的顺序表示及实现

(一)线性表的顺序存储结构

我们昨天的博客讲到了顺序存储结构的定义,即要求逻辑结构上的相邻关系体现在物理结构上也要求相邻,其结构示意图如下所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值