首页 > 编程语言 >【软考】数据结构与算法基础 - 数组和链表

【软考】数据结构与算法基础 - 数组和链表

时间:2024-07-21 11:01:20浏览次数:16  
标签:动态 软考 内存空间 链表 访问 数组 字符串 数据结构

一、数组和链表的区别(很简单,但是很常考,记得要回答全面)

什么是数组:
C++语言中, 可以用数组,处理一组数据类型相同的数据,
不可以动态定义数组的大小(使用前,必须指定大小。 )

在实际应用中,用户使用数组之前,无法确定数组的大小
只能够将数组定义成足够大小,多余出来空间可能不被使用,造成内存空间的浪费。

什么是链表:
链表是一种常见的数据组织形式,他采用动态分配内存的形式实现。
需要时,可以用new分配内存空间
不需要时,用delete将已分配的空间释放
不会造成内存空间的浪费。

在这里插入图片描述

从逻辑结构上来看,

数组
数组,必须实现定于固定的长度,
不能适应数据动态增减的情况,
即数组的大小一旦定义就不能改变。

从内存存储的角度看
从访问方式来看

当数据增加时 ,可能超过原先定义的元素的个数;
当数据减少时,造成内存浪费;
数组从栈中分配空间(用new则在堆上创建),
对程序员方便快速,但是自由度小;
数组在内存中是连续的存储,因此可以利用下标索引进行访问;
链表
* 链表动态进行存储分配
* 可以适应数据动态地增减的情况
* 且可以方便地插入、删除数据项。
* 链表从堆中分配空间,自由度大
* 但是申请管理比较麻烦。

链表是链式存储结构,在访问元素时候只能够通过线性方式由前到后顺序的访问,所以访问效率比数组要低。

二、链表的一些操作

如反转,链表存在环路判断,双向链表,循环链表相关操作。

三、队列,栈的应用。(比如对垒在消息队列,站用在递归调用中)

四、二叉树

那种遍历方式及其递归和非递归实现,三种遍历方式的主要应用(后缀表达式),相关的时间复杂度。

五、字符串相关

整型,浮点型和字符串的转换(atoi,atof,itoa)
字符串拷贝注意异常检查,比如空指针,字符串重叠,自赋值,字符串结束符‘\0’等。

六、关于数组 vs 链表,描述错误的是?

A、 数组的大小固定,而链表则天然支持动态扩容
B、 数组使用的是连续内存空间对 CPU 的缓存机制友好,链表则相反
C、 链表随机访问数据性能优于数组
D、 数组支持随机访问,而链表不支持。

标签:动态,软考,内存空间,链表,访问,数组,字符串,数据结构
From: https://blog.csdn.net/wstever/article/details/129658498

相关文章

  • 【数据结构】栈和队列
    数据结构是计算机存储、组织数据的方式。栈和队列是两种常用的线性数据结构,它们在程序设计中扮演着重要角色。一、栈(Stack)栈是一种遵循后进先出(LastInFirstOut,LIFO)原则的数据结构。其主要特点如下:1.基本操作:栈的操作主要有两种——压栈(push)和出栈(pop)。压栈:在栈顶插......
  • NoneType 在链表中不可下标
    我正在开发一个基本推荐软件的组合项目,其中我收集用户输入并根据这些输入向他们提供推荐列表。我正在使用链表数据结构,并且我可以获得程序的一部分来运行。但是,我目前遇到了一个似乎无法解决的错误。这是我遇到的问题:Traceback(mostrecentcalllast):File"/Use......
  • 用于匹配两个数据列表中的项目的高效数据结构 - python
    我有两个列表,其中一个列表填充ID,另一个列表填充进程名称。多个进程名称可以共享一个ID。我希望能够创建一个可以使用特定ID的数据结构,然后返回与该ID关联的进程列表。我还希望能够使用特定的进程名称并返回与其连接的ID列表。我知道我可以为此创建一个字典,但是I......
  • Java之集合底层-数据结构
    Java集合之数据结构1概述数据结构是计算机科学中研究数据组织、存储和操作的一门学科。它涉及了如何组织和存储数据以及如何设计和实现不同的数据操作算法和技术。常见的据结构有线性数据结构(含数组、链表、栈和队列等),非线性数据结构(树、图等)。注意:不同的数据结构适用于......
  • DAY4 链表part02
     今日任务● 24.两两交换链表中的节点● 19.删除链表的倒数第N个节点● 面试题02.07.链表相交● 142.环形链表II● 总结  //有一定难度,需要好好琢磨24.两两交换链表中的节点用虚拟头结点,这样会方便很多。题目链接/文章讲解/视频讲解:https://progr......
  • 如何建立一颗二叉树?(数据结构:树 + hash表 / 广搜BFS)
    一个二叉树,树中每个节点的权值互不相同。现在给出它的后序遍历和中序遍历,请你输出它的层序遍历。输入格式第一行包含整数 N,表示二叉树的节点数。第二行包含 N 个整数,表示二叉树的后序遍历。第三行包含 N 个整数,表示二叉树的中序遍历。输出格式输出一行 N 个整数,......
  • Known框架实战演练——进销存数据结构
    系统主要包含商品信息、商业伙伴(客户、供应商)信息、业务单表头信息、业务单表体信息、对账单表头信息、对账单表体信息。1.商品信息(JxGoods)该表用于存储公司商品信息。名称代码类型长度必填商品信息JxGoods商品编码CodeText50Y商品名称NameText2......
  • day4 链表-模拟与快慢指针
    目录任务24.两两交换链表中的节点思路19.删除链表的倒数第N个节点思路面试题02.07.链表相交思路142.环形链表II思路总结任务24.两两交换链表中的节点给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节......
  • 【数据结构】二叉树———Lesson2
    Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎~~......
  • 几种基本数据结构
    目录前言线性结构链式结构单链表双链表​编辑树形结构前言在我们编写程序时,经常会出现需要存储数据的情况,而数据的存储是有讲究的,数据不是在我们的内存中胡乱存储,为了保证数据在进行修改和查找时更加方便,我们就要学习数据结构(也就是数据的存储结构)线性结构线性结......