码迷,mamicode.com
首页 > 其他好文 > 详细

[考研系列之数据结构]线性表概述

时间:2014-06-05 06:59:17      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:c   style   blog   a   http   ext   

1.脑图


bubuko.com,布布扣
bubuko.com,布布扣

2.表示方法
按照数据结构概述所说,线性表有两种表示方法分别是顺序表示和链式表示,链表就是链式表示的典型。
我们知道链式表示是分配了n块内存空间,可以认为彼此不连续,所以不能用偏移量去定位每个元素。
下面就先说最简单的单向链表:
如果每个数据元素能有一个指针指向下一个元素的话,那么只需要知道第一个数据元素就能一个一个的遍历整个链表了,这就是单向链表。
对于每个链表元素我们称之为节点,每个节点都有两个域:数据域&指针域
数据域就是数据元素所在的区域,指针域则是存储指向另一个节点的指针的区域。
对于单向链表,它的指针域有一个指针指向下一个节点的内存地址。
需要注意的是:
头节点指向表中第一个节点,它本身的数据域不带数据,所以判断链表NULL的方法是判断头结点的指针是否为空。
最后一个节点的指针应指向NULL。
对于单向链表,它有一个问题。那就是当你获取链表中第n个元素(n>1)时,想获取它的上一个指针,需要重新遍历一遍链表,算法复杂度O(n)。为了应对这个问题,我们引入了双向链表。
双向链表
单向链表每个结点的指针域只有一个指向下一个结点的指针,现在在上面加上一个指向前一个结点的指针就变成了双向链表。这样,要寻找前一个结点只需要O(1)就可以了。
还有一类形式的链表,就是循环链表

它在单向链表上做了一点小改动,在单向链表中最后一个结点的指针是指向NULL的,可是循环链表中最后一个结点的指针是指向第一个结点的。


3.栈和队列
栈和队列都是特殊的线性表,因为他们的操作集合是小于完整的线性表的,它们在线性表之上加上了限制条件。

栈最大的特征就是LIFO(Last In First Out),也就是后入先出。最后入栈的元素最先出栈。
队列

队列最大的特征和栈相反,是FIFO(First In First Out),也就是先入先出。最先入队的元素最先出队。


4.字符串

字符串是一类特别的线性表,它的所有元素都是单个字符,针对字符串,最重要的就是寻找子串也就是字符串匹配算法了,后面会涉及。


5.数组

学过C/C++的人都会无比熟悉,也不废话了。进阶是二维数组也就是矩阵,这个会有一些要点。


6.广义表
广义表就是线性表的扩展,我们知道线性表所有的元素都是同类的,但是广义表可以使得每个元素都是不同类型。

[考研系列之数据结构]线性表概述,布布扣,bubuko.com

[考研系列之数据结构]线性表概述

标签:c   style   blog   a   http   ext   

原文地址:http://blog.csdn.net/acidsweet/article/details/27390073

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!