删除链表中等于给定值 val 的所有节点。 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5我的错误:一开始没考虑到删除头结点的问题if(p->next->next!=data)这是不对的。 方法:哨兵节点:链接:https://leetc ...
分类:
编程语言 时间:
2020-02-01 00:48:08
阅读次数:
95
面试题24:反转链表 题目描述 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点 链表结构 问题分析 头插法是反转链表非常经典的一种手段,这里演示一下吧,毕竟这个在JDK源码中也能遇见。 核心代码如下: 这些图示来自我这篇文章的 "单链表逆置:头插法图解" ,实现方面是用C语言 ...
分类:
其他好文 时间:
2020-01-31 20:52:20
阅读次数:
74
面试题22:链表中倒数第k个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。 链表结点定义如下: 问题 ...
分类:
其他好文 时间:
2020-01-31 20:48:01
阅读次数:
73
复杂的链式存储结构 循环链表 定义:是一种头尾相接的链表(即表中最后一个结点的指针域指向头结点,整个链表形成一个环) 优点:从表中任一节点出发均可找到表中其他结点 注意:涉及遍历操作时,终止条件是判断 p->next == L? 双向链表 定义:在单链表的每个结点离再增加一个指向直接前驱的指针域 p ...
分类:
其他好文 时间:
2020-01-30 19:33:15
阅读次数:
140
输入:1 2 3 4 5 -1 输出:5 4 3 2 1 此题考查头链表的创建之一 :头插法。所谓头插法是从一个空链表开始,重复读入数据,生成新结点,将读入的数据存放新结点的数据域中,然后讲新结点插入到当前链表的头结点之后,直至读入结束标志为止。 #include <stdio.h>#include ...
分类:
编程语言 时间:
2020-01-29 23:39:14
阅读次数:
115
链表是一个有序的列表,它分为单向链表,双向链表,单向环形链表 一.单向链表 链表在内存中的存储如下: 它有如下特性: 1.链表是以节点的方式,是链式存储 2.每个节点都包含data域,next域来指向下一个节点 3.每个链表在内存中的分布不一定是连续的 4.链表分为有头结点的链表和没有头结点的链表, ...
分类:
编程语言 时间:
2020-01-28 12:22:07
阅读次数:
76
栈ADT 栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶。栈的基本操作有进栈(push)和出栈(pop),前者相当于插入,后者相当于删除最后的元素。在最后插入的元素可以通过使用Top例程在执行Pop之前进行考查。对空栈进行的Pop或Top一般被认为是栈ADT的错 ...
分类:
其他好文 时间:
2020-01-15 23:17:10
阅读次数:
103
题目描述 用C++实现含头结点的单链表,然后实现单链表的两个结点交换位置。 注意不能简单交换两个结点包含数据,必须通过修改指针来实现两个结点的位置交换 交换函数定义可以参考: swap(int pa, int pb) //pa和pb表示两个结点在单链表的位置序号 swap (ListNode * p ...
分类:
其他好文 时间:
2020-01-10 20:38:37
阅读次数:
110
题目描述 用C++语言和类实现单链表,含头结点 属性包括:data数据域、next指针域 操作包括:插入、删除、查找 注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据 类定义参考 输入 n第1行先输入n表示有n个数据,接着输入n个数据第2行输入要插入的位置和新数据第3行输入要插入的位 ...
分类:
其他好文 时间:
2020-01-10 20:22:07
阅读次数:
71
翻转链表(LeetCode206题) 翻转成 我们思考,当 到底该怎样去思考,思考问题的重心在哪里? 先说结论:思考问题的重心是当前如何处理当前节点? 假设现在当前节点是头结点2,那么当发生翻转到底发生了什么? 如果我们要将节点2指向节点1,但是之前是指向节点3的,为了下次能够访问到节点3,我们应该... ...
分类:
其他好文 时间:
2020-01-06 22:46:34
阅读次数:
95