方法三:递归法(不推荐,算法实现难度大,需要额外的压栈和弹栈,有性能下降) 主要思路:先把除了第一个结点以外的结点逆序,接着把第一个结点添加到子链表的后面。 时间复杂度:O(n) def RecursiveReverse(head): # 如果链表为空,或者只有一个元素 if head is None or head.next is None: return head else: ...
7-6-4 逆序数据建立链表 (20 分) 本题要求实现一个函数,按输入数据的逆序建立一个链表。 函数接口定义: struct ListNode *createlist(); 1 函数createlist利用scanf从输入中获取一系列正整数,当读到−1时表示输入结束。按输入数据的逆序建立一个链表,并返回链表头指针。链表节点结构定义如下: struct ListNode ...
(单向循环链表) 2341 -- 23:57 App 8-3:输入10个整数,将其中最小的数与第一个数对换,把最大的数和最后一个数对换。(用指针处理) 1844 1 4:53 App 7-13:用函数递归求n阶勒让德多项式的值 851 -- 9:46 App 9-1:计算该日在本年中是第几天(使用结构体) 2701 3 11:30 App 8-16:输入一...
例如链表1->2->3->4->5->6->7->8->null,K=3这个例子。调整后为,3->2->1->6->5->4->7->8->null。因为K==3,所以每三个节点之间逆序,但其中的7,8不调整,因为只有两个节点不够一组。 给定一个单链表的头指针head,同时给定K值,返回逆序后的链表的头指针。 /* struct ListNode { int val;...
1 使用固定量的存储空间 2 主要思想是头插法,重复执行 “第二个元素插入到第一个元素之前,迭代第二个元素” 1#include <iostream>2#include <crtdbg.h>3#include <cstring>4usingnamespacestd;56typedefintDataType;7//建立链表8classlist9{10private:11structNode12{13DataType data;14Node*next;15};16Nod...
array(数组)、vector(向量)、deque(双端队列)、forward_list(单链表)、list(列表) 顺序容器 (有序)关联容器 无序关联容器 容器适配器# stack(栈)、queue(队列)、priority_queue(优先队列) 使用容器,需要包含对应的头文件 通用功能# 用默认构造函数构造空容器 ...
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例1:
总结:直接插入排序最好情况时间复杂度为O(n),最坏情况下(逆序表)时间复杂度为O(n2),因此它只适合于数据量较少的情况使用。 1.2 希尔排序 希尔排序是D.L.Shell于1959年提出来的一种排序算法,在这之前排序算法的时间复杂度基本都是O(n*n)的,希尔排序算法是突破这个时间复杂度的第一批算法之一,它是直接插入...
classDepthTree {publicstaticNodeinit() {//注意必须逆序建立,先建立子节点,再逆序往上建立,因为非叶子结点会使用到下面的节点,而初始化是按顺序初始化... = DepthTree(root); System.out.println(L); }publicstaticintDepthTree(Nodenode) { if (node==null) { return ...
147.对链表进行插入排序(插入排序) 148.排序链表(堆排序/归并排序) 164.最大间距(桶排序/基数排序) 207.课程表(拓扑排序) 210.课程表II(拓扑排序) 315.计算右侧小于当前元素的个数(归并排序) 327.区间和的个数 480.滑动窗口中位数(插入排序) 493.翻转对(归并排序) 面试题51.数组中的逆...