数据结构相关

链表特点:

  涉及到索引角标的增删改查操作,都需要先查到元素,然后才可以做其他操作,这种操作的复杂度是O(N);

链表一般会定义头尾指针,头尾的增删很方便,很适合用于实现队列(只有首尾操作)。

  链表由于可以头插入和尾插入等等,所以实现逆序很方便,只需要遍历并进行依次头插入即可实现反转链表,也可以通过反转指针实现。

 1 public void reverse() {
 2      // temp 和next的位置像斐波那契一样在依次向后移动
 3     Node temp = first;
 4     last = first;
 5     Node next = temp.getNext();
 6     for(int i = 0; i < size - 1; i++) {
 7         Node nextNext = next.getNext();
 8         next.setNext(temp);
 9         temp = next;
10         next = nextNext;
11     }
12     first = temp;
13     last.setNext(null);
14 }

反转指针

时间: 2024-10-08 19:31:30

数据结构相关的相关文章

数据结构相关模块(堆)

如果学过数据结构就知道 堆排序,python提供了一个堆队列的模块heapq能很容易实现堆排序 heapd 如果要获取一个列表中N个最大最小的元素,heapd提供了两个函数:nlargest()和nsmallest import heapqnums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2] print(heapq.nlargest(3, nums)) # Prints [42, 37, 23]print(heapq.nsmallest(3, nums))

数据结构相关模块(字典)

1.多值映射 一般的字典都是一个键对应一个值.为了想要实现多值映射就需要一个容器,列表或者集合,比如: d = {'a' : [1, 2, 3],'b' : [4, 5]}e = {'a' : {1, 2, 3},'b' : {4, 5}} 如果要实现上面的,就必须先对键值进行初始化为列表或者集合: d={} d.setdefault('a', []).append(1) 如果我们用collections模块下的defaultdict来实现就简单好多 d = defaultdict(list)f

数据结构相关知识

一.什么是数据结构? 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成. 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中. 比如:列表.集合与字典等都是一种数据结构. "程序=数据结构+算法" 二.数据结构的分类 数据结构按照其逻辑结构分为线性结构.数结构.图结构 线性结构:数据结构中的元素存在一对一的相互关系 树结构:数据结构中的元素窜在一对多的相互关系 图结构:数据结构中的元素存在多对多的相互关系 三.线性结构 1.栈 1.定义

数据结构相关模块(列表)

所有内容参照自 python cookbook 1.解压序列赋值给多个变量 一般来讲我们赋值变量是这样: a = 1 python可以这样: a,b = 1,2 或者这样: e=[1,2,3,4] a,b,c,d=e 当然 你想解压几层就解压几层,比如这样: data = [ 'ACME', 50, 91.1, (2012, 12, 21) ] name, shares, price, (year, mon, day) = data 如果你只是想要其中的几个变量,这....python没有给出特

Java的数据结构相关的类实现

Iterator: 迭代器接口,是Collection接口的父接口.Implementing this interface allows an object to be the target of the "foreach" statement. 也就是说,所有的Collection集合对象都具有foreach可遍历性. Java 8 新增: forEach() 和 spliterator() Modifier and Type Method and Description defau

Redis—数据结构之list

Redis的列表对象底层所使用的数据结构其中之一就是list. list Redis的list是一个双端链表,其由3部分构成:链表节点.链表迭代器.链表.这一设计思想和STL的list是一样的,STL的list也是由这三部分组成.需要特别说明的是Redis用C语言实现了list的迭代器,比较巧妙,下面就来分析list源码. list节点 节点的值为void*类型,从而可以保存不同类型的值,甚至是另一种类型的对象. // 双端链表的节点 typedef struct listNode { stru

数据结构——课程设计

  <数据结构课程设计>   课程题目 模拟电话客服管理系统 课程编号 j1620102 学生姓名 吴佳煜 所在专业 信息管理与信息系统 所在班级 信管1133 任课老师 易学明 实习时间 二〇一四年十二月二十五日 设计成绩 老师评语 一.课程设计题目 赵斌是一个信管专业的学生,大学四年顺利毕业了.在毕业季,他也像其他学子一样,投身于求职大军,投出一份又一份求职简历,在苦苦地等待之后,他接到了中国移动通信公司广东分司的面试通知书,通知他于本月1号10点到公司面试.当天,晴空万里,艳阳高照,他身

【数据结构】什么是数据结构?

绪论 第一个很有意义,又没什么意义的问题:什么是数据结构?? 其实,数据结构在计算机科学界至今没有标准的定义.个人根据各自的理解的不同而有不同的表述方法: Sartaj Sahni在他的<数据结构.算法与应用>一书中称: "数据结构是数据对象,以及存在于该对象的实例合组成实例的数据元素之间的各种联系.这些联系可以通过定义相关的函数来给出." 他将数据对象(data object)定义为"一个数据对象是实例或值的集合".  Clifford A.Shaff

算法导论学习(三)——数据结构

数据结构中字典(dictionary)的概念:支持在一个集合中插入和删除元素以及测试元素是否属于集合的操作的动态集合被称为字典. 动态集合假定对象中的一个属性被标识为关键字(key),对象可能包含卫星数据,它们与其他对象属性一起移动. 一.基本数据结构 1 栈和队列 栈(stack):后进先出(LIFO) 队列(queue):先进先出(FIFO) 栈顶指向最近被推入栈的元素的位置. 栈判空(时间复杂度O(1)): STACK-EMPTY(S) if S.top==0 return TRUE el