Back to Blog

知名公司数据结构笔试题

1. 把一个链表反向,递归,非递归都写一遍。

单链表反向

1.试编写3个函数实现
  (1)建立一个双向链表
  (2)插入一个节点
  (3)删除一个节点

双向链表建立、插入和删除

2.自己定义数据结构,写出程序:二叉树的前序遍历。

严蔚敏-数据结构二叉树视频

3.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。

4.下面哪种排序法对12354最快
a quick sort
b.buble sort
c.merge sort

5.哪种结构,平均来讲,获取一个值最快
a. binary tree
b. hash table
c. stack

6.一个二叉树的三种遍历方法的输出结果

7.链表按升序打印每打印完一个节点就将该节点从链表中删除

  8.选择一种算法来整理出一个链接表。你为什么要选择这种方法?现在用o(n)时间来做。

  9. 用一种算法在一个循环的链接表里插入一个节点,但不得穿越链接表。

  
10.给两个变量,如何找出一个带环单链表中是什么地方出现环的?

  11.哈希表和数组的定义,区别,优缺点。

12.链接表和数组之间的区别是什么?

任选一门语言,当场定义二叉排序树数据结构,写出两个函数:初始化,删除一个节点,20分钟

13.  递归的折半查找算法[不限语言]

14. 解释一下什么是B+树,如何实现B+树的查找和插入.(用图示)

15.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。

13.排序方法比较 ( intel )
排序方法        平均时间    最坏时间    辅助存储
直接插入排序    O(N2)       O(N2)          O(1)
起泡排序        O(N2)       O(N2)          O(1)
快速排序        O(Nlog2N)   O(N2)          O(Nlog2N)
简单选择排序    O(N2)       O(N2)          O(1)
堆排序          O(Nlog2N)   O(Nlog2N)      O(1)
归并排序        O(Nlog2N)   O(Nlog2N)      O(n)
基数排序        O(d(n+radix))O(d(n+radix))  O(radix)

17.一个链表的操作,注意代码的健壮和安全性。要求:
(1)增加一个元素;
(2)获得头元素;
(3)弹出头元素(获得值并删除)。

18.内排序算法

19.折半查找的复杂度,证明

20.sizeof()和strlen()的使用.

21.顺序存储结构的优点,散列法的思想是什么?

22.汉罗塔算法,不能递归...

23.一个链表的结点结构
struct Node
{
int data ;
Node *next ;
};
typedef struct Node Node ;

(1)已知链表的头结点head,写一个函数把这个链表逆序 (Intel)

(2)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表
依然有序。

(3)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表
依然有序,这次要求用递归方法进行。 ( Autodesk )

24.编最优化Bubble(int *pIntArray,int L),要求:交换元素不能用临时变量,如果有序需要最优。