有关算法的面试题收集

1. 对单链表排序,用代码实现【腾讯】

typedef struct Node {
    int data;
    struct Node *pNext;
} NODE, *PNODE;
//链表的长度
int length_list(PNODE pHead) {
    PNODE p = pHead->pNext;
    int len = 0;
    while (NULL != p) {
        ++len;
        p = p->pNext;
    }
    return len;
}
//对链表排序
void sort_list(PNODE pHead) {
    int i, j, t;
    int len = length_list(pHead);
    PNODE p, q;
    for (i = 0, p = pHead->pNext; i < len - 1; ++i, p = p->pNext) {
        for (j = i + 1, q = p->pNext; j < len; ++j, q = q->pNext) {
            if (p->data > q->data) {
                t = p->data;
                p->data = q->data;
                q->data = t;
            }
        }
    }
}

2. 快速找到未知长度的单链表的中间节点【腾讯】

  • 普通方法:
    遍历一遍单链表以确定单链表的长度L, 然后再次从头结点出发循环L/2次找到单链表的中间节点。
    算法复杂度:O(L + L/2)=O(3L/2)。
  • 利用快慢指针原理:
    设置两个指针search, mid都指向单链表的头结点。其中search的移动速度是mid的两倍。但*search指向末尾节点的时候,mid正好在中间了。
    代码实现(C语言)
typedef int ElemType;
typedef struct Node
{
    ElemType data; //数据域
    struct  Node *next; //指针域
} Node;
typedef struct Node *LinkList;
//快速找到未知长度单链表的中间节点 L:链表的头结点 *e返回的链表中间节点
bool GetMidNode(LinkList L, ElemType *e) {
    LinkList search, mid;
    mid = search = L;
    while (search->next != NULL) {
        if (search->next->next != NULL){
            search = search->next->next;
            mid = mid->next;
        } else {
            search = search->next;
        }
    }
    *e = mid->data;
    return true;
}

持续努力更新中......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不...
    曲终人散Li阅读 8,645评论 0 19
  • 1.线性表的定义 线性表:零个或多个数据元素的有限序列序列:也就是说元素之间是有顺序的,若元素存在多个,则第一个元...
    e40c669177be阅读 6,365评论 6 15
  • 本文内容取自于小甲鱼的数据结构与算法。http://www.jianshu.com/p/230e6fde9c75 ...
    阿阿阿阿毛阅读 8,067评论 0 7
  • 作为一个资深的新手程序员😂,链表这些既基础又深奥的东西是日常工作中并不常见,但是却非常重要,所以就总结一下链表的简...
    Clark_new阅读 9,782评论 4 12
  • 一、数据结构绪论 逻辑结构与物理结构逻辑结构:集合、线性(一对一)、树(一对多)、图(多对多)物理结构:顺序存储结...
    scarqin阅读 7,349评论 0 3

友情链接更多精彩内容