数据结构第一弹

简述数据结构,抽象数据结构和数据类型之间的异同。

数据结构,抽象数据结构和数据类型本质上来说是同一概念,数据类型是程序设计中实现了的数据结构,而抽象数据结构是数据类型的进一步抽象和发展,借助数据类型可以在程序中完成抽象数据类型。数据类型是程序设计语言中的一个概念,是一个值的集合和运算的集合。抽象数据类型是一个数学模型和定义在该模型上的一组运算。

简述逻辑结构和存储结构之间的关系:

在数据结构中,逻辑结构与计算机无关,存储结构是数据元素之间的逻辑关系在计算机中的表示,存储结构不仅将逻辑结构中的所有数据元素存储到计算机内存中,而且还在内存中存储各数据结构间的逻辑关系。通常情况下,一种逻辑结构可以有多种数据结构,例如:线性结构可以采用顺序存储或链式存储。

简述顺序表和链式表存储方式的主要优缺点。

顺序表的优点是可以随机存储元素,存储密度高,结构简单,缺点是需要一片地址连续的存储空间,不便于插入和删除元素(需要移动大量元素 ),表的初始容量难以确定。链表的优点是便于结点的插入和删除(只需要修改指针属性,不需要移动结点),表的容量扩充十分方便,缺点是不能进行随机访存,只能顺序访问,另外在每个结点上增加指针属性,导致存储密度低。

对单链表设置一个头结点的作用是什么?

带头结点时,空表也存在一个头结点,从而统一了空表和非空表的处理。

在单链表中插入和删除结点时,都需要修改前驱结点的指针属性,带头结点时任何数据节点都有前驱结点,这样使得插入和删除操作更加方便。

在单链表,双链表和循环链表中,若只知道指针p指向某个结点,不知道头结点,能否将p删除如果可以,其时间复杂度是多少?

对于单链表来说,不能将p结点删除,只能找到其后继结点,但是其前驱结点未知,头结点未知,前驱结点无法访问,不能删除。

双链表来说能根据已知结点找到其前驱结点和后继结点,所以可以删除。时间复杂度是O(1)。

循环链表可以找到其后继结点,而且可以通过查找得到p的前驱结点。可以删除,时间复杂度是O(n)。

简述线性表,栈和队列的异同。

线性表,栈和队列的相同点就是他们的逻辑关系都是线性关系,不同点是运算不同,线性表可以在两端和中间任何位置插入和删除元素,而栈只能在一端插入和删除元素,队列只能在一端插入元素,在另一端删除元素。

有n个不同的元素经过一个栈能产生的出栈序列个数是多少个?

什么叫做队列的假溢出,如何解决假溢出?

在非循环顺序队中,当队尾指针已经到达数组的上界,不能再进行进队操作,但是其实数组中还有空位置,这就叫假溢出,解决假溢出的方式之一就是采用循环队列。

相关推荐
爱吃生蚝的于勒16 分钟前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
羊小猪~~20 分钟前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio
脉牛杂德1 小时前
多项式加法——C语言
数据结构·c++·算法
一直学习永不止步1 小时前
LeetCode题练习与总结:赎金信--383
java·数据结构·算法·leetcode·字符串·哈希表·计数
wheeldown9 小时前
【数据结构】选择排序
数据结构·算法·排序算法
躺不平的理查德13 小时前
数据结构-链表【chapter1】【c语言版】
c语言·开发语言·数据结构·链表·visual studio
阿洵Rain13 小时前
【C++】哈希
数据结构·c++·算法·list·哈希算法
Leo.yuan14 小时前
39页PDF | 华为数据架构建设交流材料(限免下载)
数据结构·华为
半夜不咋不困14 小时前
单链表OJ题(3):合并两个有序链表、链表分割、链表的回文结构
数据结构·链表
忘梓.15 小时前
排序的秘密(1)——排序简介以及插入排序
数据结构·c++·算法·排序算法