数据结构之线性表

线性表 : 由零个或多个数据元素组成的有限序列;

特点 :

     是一个序列,也就是说元素之间存在先后顺序;

     若存在多个元素,则第一个元素无前驱,最后一个元素无后继,其他元素都有且只有一个前驱和后继;

     线性表强调 有限的;

 

数学定义 : 若将线性表记为(a1,....ai-1,ai,ai+1,..an);则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素;

所以线性表的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表;

 

数据类型 : 指一组性质相同的值的集合及定义在此集合上的一些操作的总称;;  例; 浮点型,整形;

在c语言中,按照取值的不同,数据结构分为2类 :

  原子类型  : 不可以再分解的基本类型;整形,浮点型;

 结构类型 : 由若干个类型组合而成,是可以再分解的;例整形数组可以分解若干个整形;

 

抽象 : 是指抽取出事物具有的普遍性的本质;它要求抽取出问题的特征

抽象数据类型adt : 是指一个数据模型及定义在该模型上的一组操作;

 

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

线性表的顺序存储结构,在存,读数据时,不管在哪儿位置,时间复杂度都是O(1);而在插入或者删除时,时间复杂度都是O(n);

优点  :

     无须为表示表中元素之间的逻辑关系而增加额外的存储空间;

     可以快速的存取表中的任意位置的元素;

缺点 :

    插入和删除操作需要移动大量的元素;

    当线性表长度变化较大时,难以确定存储空间的容量;

    容易造成存储空间的"碎片";

线性表的链式存储结构 特点 : 用一组任意的单元存储线性表的数据元素,这组存储单元可以存在内存中未被占用的任意位置;

   把存储数据元素信息的域称为数据域;把存储直接后继位置的域称为指针域;

   指针域中存储的信息称为指针或链;这两部分信息组成数据元素称为存储映像,称为节点;

 

每个节点中只包含一个指针域,称为单链表;

 

头结点的数据域不存储任何信息,

头指针 : 指链表指向第一个节点的指针,若链表有头结点,则是指向头结点的指针;

头指针具有标识作用,常用头指针冠以链表的名称 ;(指针变量的名字)

无论链表是否为空,头指针均不为空;

头指针是链表的必要元素

 

头结点 : 为了操作的统一和方便而设立的,放在第一个元素的节点之前,其数据一般无意义(也可以用来存放链表的长度)

 

 获取链表第i个数据的算法思路 :

     声明一个节点p指向链表第一个节点,初始化j从1开始;

    当j< i时,就遍历链表,让p的指针向后移动,不断指向下一个节点,j+1;

     若到链表末尾p为空,则说明第i个元素不存在; 否则查找成功,返回节点p的数据;

   

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值