单向链表

在单向链表中如何快速查到倒数第n个节点 这简直是一种神奇的思路!!!!leetcode 删除倒数第n个节点

放肆的年华 提交于 2019-11-29 20:44:34
在单向链表中如何快速查到倒数第n个节点? 操作方法和步骤: (1)定义2个指针p1,p2。 (2)使用循环让p2指向顺数第n个节点,同时p1指向第头结点; (3)然后,p1和p2同时移动,直到p2指向NULL,此时p1应该指向倒数第n个节点。 19. Remove Nth Node From End of List 方法一: <span style="font-family:SimHei;font-size:18px;">/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { int k=0; ListNode *p=head; while(p) { k++; p=p->next; } if(head==NULL || head->next==NULL) return NULL; else if(head->next->next==NULL) { if(n==1) head->next=NULL; if(n=

Linux EPOLL内核代码学习笔记

允我心安 提交于 2019-11-29 10:19:59
内容目录 什么是EPOLL EPOLL接口 EPOLL机制 两张图 什么是EPOLL 摘录自manpage介绍 man:epoll(7) epoll(4) epoll is a variant of poll(2) that can be used either as an edge-triggered or a level-triggered interface and scales well to large numbers of watched file descriptors. EPOLL接口 epoll_create (or epoll_create1) epoll_create opens an epoll file descriptor by requesting the kernel to allocate an event backing store dimensioned for size descriptors. epoll_ctl epoll_ctl() opens an epoll file descriptor by requesting the kernel to allocate an event backing store dimensioned for size descriptors. epoll_wait The epoll_wait()

JAVA面试解析

此生再无相见时 提交于 2019-11-29 05:53:01
JAVA面试解析(有赞一面) 文章转载自公众号 孤独烟 孤独烟 , 作者 孤独烟 本文公众号来源:孤独烟 作者:孤独烟 本文的题目出自博客 http://www.54tianzhisheng.cn/2018/07/12/youzan/ 但是作者没有给出答案,博主斗胆来制作答案版。 引言 说在前面的话: 本文适合人群:急等着换工作的人 我承认刷面试题很有用的,纵观几年来的JAVA面试题,你会发现每家都差不多。比如,你仔细观察,你会发现,HashMap的出现几率未免也太高了吧!连考察的知识点都一样,什么hash碰撞啊,并发问题啊!再比如JVM,无外乎考内存结构,GC算法等!因此,如果是为了面试,完全是有套路可以准备的!记住,基础再好,也架不住面试官天马行空的问,所以刷面试题还是很有必要的! 本文不适合人群:专攻JAVA某方面技术的人 因为这类人专攻JAVA某块技术,知识容易出现死角。贸然阅读本文,发现自己一堆题目都不会,会觉得有一种挫败感,发现自己连校招生都不如。然而,会点面试题不算什么,毕竟Homebrew作者也出现过解不出面试题,被Google拒绝,缘由就是,因为他不会翻转二叉树。难道你能说Homebrew的作者水平有问题! 正文 一面 1、自我介绍 评注:这个地方答什么随意,大部分面试官不会听你介绍,这个时间都在看简历。如果是电话面,回答时间控制在40秒到1分钟左右就行

《听说史上最全挺好用的》-java集合面试知识大全

余生长醉 提交于 2019-11-28 14:08:59
欢迎关注这一文章系列,一起学习 提升能力,涨薪可待 面试知识,工作可待 实战演练,拒绝996 也欢迎关注公 众 号【 Ccww笔记 】,原创技术文章第一时间推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 一、集合基础 1.1 集合框架有哪些优点如下: 使用核心集合类降低开发成本,而非实现我们自己的集合类。 随着使用经过严格测试的集合框架类,代码质量会得到提高。 通过使用 JDK 附带的集合类,可以降低代码维护成本。 复用性和可操作性。 1.2 Java集合类框架的基本接口有哪些? Java 集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有: Collection:代表一组对象,每一个对象都是它的子元素。 Set:不包含重复元素的 Collection。 List:有顺序的 collection,并且可以包含重复元素。 Map:可以把键(key)映射到值(value)的对象,键不能重复。 还有其它接口 Queue、Dequeue、SortedSet、SortedMap 和 ListIterator。 1.3 为什么集合类没有实现 Cloneable 和 Serializable 接口? 集合类接口指定了一组叫做元素的对象。集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序,可以使得集合类很灵活

C#单向链表的实现

隐身守侯 提交于 2019-11-28 10:15:07
节点 class Node<T> { private T data; //数据域 private Node<T> next; //引用域 //数据域属性 public T Data { get => data; set => data = value; } //引用域属性 internal Node<T> Next { get => next; set => next = value; } //构造器 public Node(T val, Node<T> p) { Data = val; Next = p; } //构造器 public Node(Node<T> p) { Next = p; } //构造器 public Node(T val) { Data = val; } //构造器 public Node() { Data = default(T); Next = null; } } 接口 public interface IListDs<T> { int GetLength(); //求长度 void Clear(); //清空操作 bool IsEmpty(); //判断线性表是否为空 void Append(T item); //附加操作 void Insert(T item, int i); //插入操作 T Delete(int i); //删除操作 T

如何实现一个高效的单向链表逆序输出

你说的曾经没有我的故事 提交于 2019-11-27 16:19:25
下面是其中一种写法,也可以有不同的写法,比如递归等。供参考。 static class Node { private int data ; private Node next ; Node ( int d ) { data = d ; next = null ; } public int getData ( ) { return data ; } public void setData ( int data ) { this . data = data ; } public Node getNext ( ) { return next ; } public void setNext ( Node next ) { this . next = next ; } } public static void reverse ( Node head ) { if ( null == head || null == head . getNext ( ) ) { return ; } Node prev = null ; Node pcur = head . getNext ( ) ; Node next ; while ( pcur != null ) { if ( pcur . getNext ( ) == null ) { pcur . setNext ( prev ) ; break ;

数据结构:单向链表(Linked List)

拥有回忆 提交于 2019-11-26 20:22:40
本文来源: Linked List | Set 1 (Introduction) Linked List | Set 2 (Inserting a node) Linked List | Set 3 (Deleting a node) Find Length of a Linked List (Iterative and Recursive) (todo:在结构中保持节点数信息) Search an element in a Linked List (Iterative and Recursive) Pairwise swap adjacent nodes of a linked list by changing pointers | Set 2 todo:交换相邻两个节点 Program to reverse a linked list using Stack ,链表倒序重新组织 Binary Search on Singly Linked List Find the middle of a given linked list in C and Java 、正序、逆序插入 基础知识 介绍:链表与数组一样,同属于线性表的一个子集。不同之处在于链表元素并不需要存储到一块连续的内存空间; 链表中的元素通过指针来链接并维护各个节点之间的联系,可使用连续的内存空间、亦可不使用连续的内存空间

C# 反转单向链表

你说的曾经没有我的故事 提交于 2019-11-26 18:08:20
static void Main(string[] args) { Mynode mynode0 = new Mynode(); Mynode mynode1 = new Mynode(); Mynode mynode2 = new Mynode(); Mynode mynode3 = new Mynode(); Mynode mynode4 = new Mynode(); Mynode mynode5 = new Mynode(); mynode0.Value = 0; mynode0.Next = mynode1; mynode1.Value = 1; mynode1.Next = mynode2; mynode2.Value = 2; mynode2.Next = mynode3; mynode3.Value = 3; mynode3.Next = mynode4; mynode4.Value = 4; mynode4.Next = mynode5; mynode5.Value = 5; mynode5.Next = null; mynode0 = Reverse(mynode0, mynode0.Next); } static Mynode Reverse(Mynode current, Mynode next) { Mynode tmp = next.Next; next