题目描述

给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null

原理

如上图所示为模拟的一个链表环。

阅读全文 »

题目描述

输入两个链表,找出它们的第一个公共结点

原理

因为拥有一个共同节点,所以先遍历两个链表得到他们的长度,就能知道哪个链表比较长,以及长的链表比短的链表多几个结点(diff,如果一样长则diff为0)。在第二次遍历的时候,在较长的链表上先走若干(diff)步,接着同时在两个链表上遍历,找到的第一个相同的结点就是他们的第一个公共结点

代码实现

阅读全文 »

题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则

原理

通过递归:

A和B两个链表,每次比较A当前节点和B当前节点,如果A.val < B.val,就保留A的前节点,然后用l1的下一个节点开始的集合和B做合并,合并好的结果保存到nHead,这样即能保证小的节点排在前面,又能保证节点能串接在一起成为个大集合
反之,B.val < A.val也一样,先保留B当前节点,然后用B的下一个节点开始的集合和A合并,合并结果保存到B的下一个节点

阅读全文 »

题目描述

输入一个链表,反转链表后,输出新链表的表头

原理

假设正在对结点v进行反转操作,即原来结点u的next域指向v(图中已经调整完毕,现在指向前一个结点),v的next域指向w。现在要做的是将v的next域指向u。从图中我们可以看出,当把v的next指针指向u的同时,原先指向的w就已经无法被正常的访问到了,为了避免“断链”,我们必须在指针更改指向之前,保存修改结点的下一结点

阅读全文 »

简介

链表是一种物理存储上非连续、非顺序的存储结构,其元素的逻辑顺序是通过链表中的指针链接次序实现的。

特点

链表的一个节点通常有两个元素:数据域和指针域

  1. 数据域:存放数据
  2. 指针域:存放下一个节点的地址
阅读全文 »

题目描述

使用两个队列实现一个栈,包含入栈push()和出栈pop()操作

原理

将队列A作为当前容器,队列B不管,当入栈push()操作时,全部入队到A,而当A不为空且需要出栈pop()时,将A的前n-1个元素出队到B队列里,如图

阅读全文 »

简介

  1. 队列是一种特殊的线性存储结构
  2. 特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头

特点

  1. 队列中的数据元素遵循“先进先出”(First In First Out)的原则,简称FIFO结构
  2. 在队尾添加元素,在队头删除元素

队列的相关概念

阅读全文 »

描述

来源:牛客-选择题

以下程序片段输出什么内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;

class Demo {
public:
Demo() :count(0) {}
~Demo() {}

void say(const string& msg)
{
fprintf(stderr, "%s\n", msg.c_str());
}
private:
int count;
};

int main(int argc, char** argv)
{
Demo* v = NULL;
v->say("hello world");
}

A. 运行错误

阅读全文 »

官网下载

直达

phar下载

直达

无法安装可将composer.phar放入php.exe同级文件夹
并新建composer.bat内容为@php "%~dp0composer.phar" %*

阅读全文 »