zoukankan      html  css  js  c++  java
  • 小狼,你家BOSS喊你面试啦!!!(五)

    1、链表和数组的区别

    (1)逻辑结构:数组大小是在声明数组时就要知道;链表大小动态申请,不必事先知道。

    (2)存储位置:数组(栈上一段连续的内存);链表(动态申请的堆内存,可以是不连续的内存)

    (3)特点不同:数组的特点是随机访问效率高,但是删除和添加元素效率低,要移动多个元素;链表则是增加和删除结点效率高,但要访问只能从链表的头开始遍历,随机访问时效率低。

    (4)数组有越界问题;链表则不会存在越界问题。

    2、何时选用顺序表、何时选择链表作为线性表的存储结构为宜

    如果经常查找、随机访问,则用顺序表;如果经常进行增删操作,就用链表。

    3、如何使用链表头

    这里就是头结点和头指针的概念了。单链表的头结点数据域没有数据(或者有链表长度信息等),头结点指针域指向第一个链表的第一个元素。

    头指针就是指向链表开始结点(第一个结点)的指针。

    4、如何实现单链表的插入和删除操作

    这里简写啦,因为在数据结构章节有这部分的输入。

    插入结点s:s->next=p->next;p->next=s;

    删除结点s:r=p->next;p->next=r->next;free(p)

    5、如何找出单链表中倒数第K个元素

    维持两个索引,一个先行,直到第一个走了K-1个元素后,两个指针再一起移动,每次移动一步;等先行的指针为NULL时,第二个指针就指向倒数第K个了。

    6、如何进行单向链表的翻转

     反转后头结点变成尾结点了

  • 相关阅读:
    js炫酷效果
    程序员的执着
    [心得]docker学习笔记
    [心得笔记]多线程之间的内存可见性问题
    Docker入门
    [心得体会]jvm
    redis学习总结
    [心得]redis集群环境搭建的错误
    Linux安装mysql5.7版本
    Cent OS下安装JDK11
  • 原文地址:https://www.cnblogs.com/westlife-11358/p/9461592.html
Copyright © 2011-2022 走看看