昨天的贴了一些双链表的基本操作(实现代码),对于一些上过课,知道了一些基本概念的同学,我相信还是有一点小小的帮助的。但是,这样的话,对于那些基本概念读不了解的童鞋,我觉得我的那些实现代码就会有点肯跌了~~~
所以,这次,我会从基本概念开始说,但是我还是会以代码为主,因为我觉得,基本概念知道的再多,也不急会几行代码~~~~~~~~~~~~~~~
进入正题:
线性表:
好吧,肯跌了,我还真的说不出它的定义,但我从它名字,我会知道,它是线性的(好像废话),说的专业点就是:
除第一个元素外,其他每一个元素有一个且仅有一个直接前驱;
除最后一个元素外其他每一个元素有一个且仅有一个直接后继。
这就是线性表的基本特征了。
那顺序表和链表有是什么呢?
顺序表和链表都是线性表。
首先说下顺序表:其实很简单,就是像数组一样,数据存放在连续的存储空间中。
用数组就能很方便的实现这种结构。
所以,因为储存结构的顺序与逻辑结构的顺序完全一致,其最大优点就是可以方便地随机存取表中任一个结点。
就像数组可以直接用下表来对数组进行操作。
但是,这一个又有一个很大的缺点:既然储存结构的顺序与逻辑结构的顺序完全一致,那么,当我们想在中间插入或者在中间删除一个数据的时候,我们就要将该位置以后的所有数据都向后移,或者向前移。效率就有点低了吧。还有一个问题:当我们定义一个数组的什么时候,比如:int str[N];N是一个给定的数,也就是说,我要给他分配一块固定的空间,那么,当我们不知道要多少空间的时候,我们有可能会让费空间,或者空间不够用。
这样就要说到链表了,它是线性表的链接存储表示可不连续地分布在内存中任何的位置。
链表(单链表,双链表,(循环,带头))
我这篇博客就说说单链表了~~~~~
1.单链表结点:
typedef int NodeData;
typedef struct node
{
NodeData data;
struct node *next;
}NODE;
本来不打算说的,后来想想,还是写上去,只想推荐使用typedef
2.单链表的create,insert,remove,sort都不说了
3.我只想说下单链表的转置(很多公司面试题都会问这个):
NODE * myreverse(NODE *head)
{
if(head == NULL ||head->next == NULL)
{
return head;
}
else
{
NODE *front = NULL;
NODE *q = head;
while(q != NULL)
{
NODE *ne = NULL;
ne = q->next; /*记录下一个节点*/
q->next = front; /*q指向q的前驱节点*/
front = q; /*这时候q->next的前驱节点就是q了*/
q = ne; /*q = q->next*/
}
return front;
}
}
这个应该还是很重要的,能完全熟练掌控最好,不能的话就背下来呗,反正也不长。
最后,还是 多画画图,对学数据结构太有用了。
还有,说好的,以代号为住的,结果~~~~~~~~~~~~
分享到:
相关推荐
Java数据结构 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构
数据结构Java线性表顺序表与链表小结PPT学习教案.pptx
c语言数据结构线性表实验(包括顺序表和链表)
线性表双向链表链表详细代码,有三个小的程序,调试通过。
数据结构_线性表_顺序表_源代码实现插入,删除,排序,查找功能
数据结构 线性表 实验代码 C++ 链表 C/C++的数组/链表四种都写了。虽说基本操作能实现,但感觉还有很多要改进的地方,下学期学数据结构这门课时再改了 hust 赵明
本资源为数据结构与算法第二章(线性表)的实验程序代码。包含以下的三个程序:1.顺序表;2.线性链表;3.约瑟夫环。 北工大电控学院《数据结构与算法》课程的其它章节程序实验及作业代码亦已在本站上传,需要的同学...
数据结构课件-线性表顺序表.ppt
线性表的顺序表的建立、插入、删除、输出等操作。
主要讲解了 线性表的一些知识。很适合数据结构的学习者使用
数据结构 线性表和链表 c++面向对象实现 分文件编写
包含数据结构中线性表、链表、队列、栈、串等几种结构的常见操作,以及顺序和链式存储过程
2第二章 线性表(顺序表 链表).pdf
数据结构教学课件:线性表链表.ppt
本文档描述了线性表和链表的定义和功能及使用方法。适合初学者了解线性表和链表。
线性表的顺序表示和实现,博客链接: http://blog.csdn.net/u013071074/article/details/27336291
很好用的链表方法学习资料, 代码经过整理和测试运行... 里面讲解丰富
数据结构教学课件:线性表顺序表.ppt
在众多数据结构当中,线性表是最简单、也是最...本实验相对比较简单,通过本实验,对顺序表基本操作及 其组合应用的演练,加深对线性表顺序存储方法及其基本操作的理解,为以后进一步学习更 复杂的数据结构打下基础。
(1)创建一个顺序表,存放在数组 A[N]中,元素的类型为整型,设计算法调整 A,使其左边的所有元素小于 0,右边的所有元素大于 0(要求算法的时间复杂度和空间复杂度均为 O(n))。 (2)建立一个循环单链表,其节点...