线性表概述

[size=x-small]线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。[/size]

在实际应用中,[b][color=red]线性表都是以栈、队列、字符串、数组等特殊线性表的形式来使用的[/color][/b]。由于这些特殊线性表都具有各自的特性,因此,掌握这些特殊线性表的特性,对于数据运算的可靠性和提高操作效率都是至关重要的。   线性表是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有一个终端结点没有后继但有一个前驱结点,其它的结点都有且仅有一个前驱和一个后继结点。一般地,一个线性表可以表示成一个线性序列:k1,k2,…,kn,其中k1是开始结点,kn是终端结点。

[b]基本特征[/b]

线性结构的基本特征为:   
1.集合中必存在唯一的一个“第一元素”;   
2.集合中必存在唯一的一个 “最后元素” ;   
3.除最后一个元素之外,均有 唯一的后继(后件);   
4.除第一个元素之外,均有 唯一的前驱(前件)。   
由n(n≥0)个数据元素(结点)a1,a2,…,an组成的有限序列。   
数据元素的个数n定义为表的长度。   当n=0时称为空表。  
 常常将非空的线性表(n>0)记作:   (a1,a2,…an)   数据元素ai(1≦i≦n)只是一个抽象的符号,其具体含义在不同的情况下可以不同。   
线性表的基本操作   
1)Setnull(L) 置空表   
2)Length(L) 求表长度;求表中元素个数   
3)Get(L,i) 取表中第i个元素(1≤i≤n)   
4)Prior(L,i) 取i的前趋元素   
5)Next(L,i) 取i的后继元素  
6)Locate(L,x) 返回指定元素在表中的位置   
7)Insert(L,i,x)插入元素   
8)Delete(L,x) 删除元素   
9)Empty(L) 判别表是否为空。


在实现线性表数据元素的存储方面,一般可用顺序存储结构和链式存储结构两种方法。


[b]栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。   
栈是一种数据结构,是只能在某一端插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。   
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。
栈也称为后进先出表(LIFO--Last IN First Out表)。   
栈可以用来在函数调用的时候存储断点,做递归时要用到栈![/b]


队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。
进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列中没有元素时,称为空队列。   
在队列这种数据结构中,最先插入在元素将是最先被删除;反之最后插入的元素将最后被删除,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。   
队列空的条件:
front=rear   
队列满的条件:
rear = MAXSIZE


 串是零个或多个字符组成的有限序列。一般记S=‘a1a2....an ’其中,S是串名,单引号括起的字符序列是串值;ai(1〈=i〈=n)可以是字母,数字或其它字符;串中所包含的字符个数为该串的长度。长度为零的串称为空串,它不包含任何字符。   串中任意个连续的字符组成的子序列称为该串的子串。包含子串的相应地称为主串。通常,把子串在主串中第一次出现时,子串的第一次字符在主串中的序号,定义为子串在主串中的序号。   称两个串是相等的,当且仅当这两个串的值相等。也就是说,只有当两个串的长度相等,并且各个对应位置的字符都相等时才相等。   值得一提的是,串值必须用一对单引号括起来,但单引号本身不属于。

注意:此处特别提到匹配算法:朴素算法和kmp改进型算法。具体参见例子
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值