数据结构之树

作为一名程序猿,想在面试的时候游刃有余,首先要熟练掌握数组、字符串、链表、树、栈、队列这几种基础的数据结构。 --> 1 树 树的结构:除根节点外每个节点只有一个父节点,根节点没有父节点;除叶节点外每个节点只有一个或多个子节点,叶节点没有子节点。父节点和子节点用指针链接。 树的遍历:前序遍历、中序遍历、后序遍历,其递归和循环实现都要熟练掌握。此外还有广度优先遍 ...

数据结构之栈与队列

作为一名程序猿,想在面试的时候游刃有余,首先要熟练掌握数组、字符串、链表、树、栈、队列这几种基础的数据结构。 --> 1 栈与队列 栈是一个非常常见的数据结构,其特点是先进后出,操作系统在函数调用便会使用栈结构。 栈是一个不考虑排序的数据结构,因此查找最大最小元素的时间复杂度为 O(n),若想要在 O(1) 时间内得到栈的最大最小值,则需要对栈做特殊的 ...

数据结构之链表

作为一名程序猿,想在面试的时候游刃有余,首先要熟练掌握数组、字符串、链表、树、栈、队列这几种基础的数据结构。 --> 1 字符串 C/C++ 中字符串一般以 '\0' 作为结尾,因此可以很方便地寻找字符串的最后。 但是注意字符串的实际长度要考虑 '\0' 的存在。 字符串的拷贝一般从后向前,可以避免覆盖以及额外的工作量。 2 链表 ...

数据结构之数组

作为一名程序猿,想在面试的时候游刃有余,首先要熟练掌握数组、字符串、链表、树、栈、队列这几种基础的数据结构。 --> 1 数组 数组空间效率不高,需要预先分配内存,且经常会有空闲区域得不到利用。 数组时间效率较高,根据下标可以在 O(1) 时间内完成读写。 可以利用数组时间效率高的特点来实现简单的哈希表。 为了解决数组空间效率不高的问题,有人设计了 ...