编译原理笔记

程序如何被机器识别机器只能识别010101这样的机器码,使用高级语言编写的程序,必须转换成机器码才能够被机器识别。 高级语言程序转换成机器码经历了以下几个步骤: 预编译(Propressing) 编译(Compilation) 汇编(Assembly) 链接(Linking) 接下来依次讲解这个几个步骤的详细过程。 1.预编译对于 C 语言而言,源代码文件 hello.c 和头文件 stdio.h 等会被预编译器 cpp 预编译成一个 .i 文件。 对于 C++ 程序来说,源代码文...

阅读全文

云南之旅

一直以来都想要在毕业之前来一场说走就走的旅行,不管是一个人也好还是和小伙伴们一起。自从工作实习以来,越来越觉得能够有一段属于自己的时间是多么的难得。而毕业前的假期可能是最好的机会了,如果这次不出去走走的话,等以后毕业正式工作了,就只能等到小长假在人山人海中挣扎了。学校通知外出实习的同学要在5月20号左右返校,于是我向公司请了从5月15号到6月底的假,中间有5天的时间出去玩。 至于为什么选择了云南,有的人可能因为那部《心花路放》而心生向往,有的人可能因为那首《去大理》而一路西行,而我的原因很...

阅读全文

206. 反转链表[easy]

LeetCode 算法题停止更新,请移步至 GitHub。 题目地址206. 反转链表 题目描述反转一个单链表。 解题方法1.双指针法 使用两个指针分别表示当前节点的前一个节点和后一个节点。 12345678910111213141516171819202122232425/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ...

阅读全文

141.环形链表[easy]

LeetCode 算法题停止更新,请移步至 GitHub。 题目地址141. 环形链表 题目描述给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 解题方法1.哈希表 使用哈希表来存储节点,key 为当前节点,value 为当前节点的下一节点,存储形式为 [node : node -> next] 访问当前节点时,先在字典中取出当前节点对应的 value...

阅读全文

83.删除顺序链表中的重复元素[easy]

LeetCode 算法题停止更新,请移步至 GitHub。 题目地址206.删除排序链表中的重复元素 题目描述给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 解题方法1.直接法把当前的节点值和下一个节点值作比较,如果相等,则直接删除下一个节点的值,这里注意,删除下一个节点后,不能直接移动当前指针到新的下一个节点,因为新的下一节点也有可能和当前节点值相等,而是要继续比较一次。注意边界条件,避免出现空指针错误。 123456789101112131415161718192021...

阅读全文

排序算法

冒泡排序 4 5 3 6 2 1 4 5 3 6 2 1 4 5 3 6 2 1 4 3 5 6 2 1 4 3 5 6 2 1 4 3 5 2 6 1 4 3 5 2 1 6 一次冒泡操作,可以将最大的数浮到最后面。 循环 array.size() 次,即可完成排序。 当某次冒泡操作已经没有数据交换时,说明已经达到了完全有序,不用再执行后续的冒泡排序了。 12345678910111213141516void bubbleSort(vecotr<...

阅读全文

344.反转字符串[easy]

LeetCode 算法题停止更新,请移步至 GitHub。 题目描述编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例12输入:["h","e","l","l","o"]输出:[&...

阅读全文

155.最小栈[easy]

LeetCode 算法题停止更新,请移步至 GitHub。 题目描述设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) – 将元素 x 推入栈中。 pop() – 删除栈顶的元素。 top() – 获取栈顶元素。 getMin() – 检索栈中的最小元素。 示例12345678MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.pus...

阅读全文

225.用队列实现栈[easy]

LeetCode 算法题停止更新,请移步至 GitHub。 题目描述使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 说明你只能使用队列的基本操作– 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 ...

阅读全文

232.用栈实现队列[easy]

LeetCode 算法题停止更新,请移步至 GitHub。 题目描述使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 示例1234567MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1queue.pop(); // 返回 1q...

阅读全文


Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2019 Acan's blog All Rights Reserved.

访客数 : | 访问量 :