一,为什么学习数据结构
1、c语言学习的时如何写代码、数据结构教会我们如何高效简介的写代码。
2、实现一个功能、写代码解决什么问题?
1》数据与数据之间的逻辑规律和数据在计算机中如何表示(存储)
数据结构:数据的逻辑结构存储结构及操作
数据:不只是一个单独的数值、是一个集合的概念。
2》解决问题的方法(实现代码的逻辑思想)
算法
数据结构+算法=程序
二,逻辑结构
(1)概念:描述数据之间的逻辑规律和联系 (元素与元素之间的关系)
(2)逻辑结构的分类:
1.线性结构 ---》线性存储--》一对一的关系 ---》顺序表、链表
头节点无前驱、尾节点无后继
2.层次结构 --》树 ---》一对多的关系 --》树
根节点无前驱,叶子节点无后继
3.网状结构 --》图 ---》多对多的关系 ---》图
4, 存储结构
(1)概念:数据的逻辑结构在计算机中的具体实现
(2)存储结构分类:
1.顺序存储:内存空间开辟是连续
数组:内存空间连续开辟,数据元素类型相同
2.链式存储:通过地址将数据元素联系在一起
3.索引存储:通过索引表找到数据元素存放位置,拿到数据
存在两个表格--》索引表 和 数据表
书名---》数据表中查寻书的位置
4.散列存储结构 (哈希存储)
数据元素的存放和位置之间存在一个关系。
存在一个关键字key和一个关系函数,通过关键值key带入关系函数计算出数据存放的位置。对应位置存放、对应位置取值。
5,顺序表和链表的相同点和不同点有哪些?
相同点: 都是线性表 逻辑结构:线性结构 一对一
不同点:
(1)顺序表存储结构是顺序存储,内存当中存储是连续的 链表是链式存储,通过指针将节点联系到一起,内存上存储不连续
(2)顺序表(数组)长度固定,链表不固定
(3)顺序表查找方便,但是插入和删除麻烦,链表插入和删除方便,但是查找麻烦
4. 线性表的特征是什么?
线性表: 顺序表 链表 栈(顺序栈和链式栈) 队列(顺序队列也叫循环队列和链式队列)
线性表的特征:一对一,每个节点最多有一个前驱和一个后继(首尾节点除外)
(1)若进栈顺序为 1,2,3,4 一下四种情况不可能出现的出栈序列是( C )
A. 1,4,3,2
B. 2,3,4,1
C. 3,1,4,2
D. 3,4,2,1
2. 下列叙述正确的是( A)
A. 线性表是线性结构B. 栈与队列是非线性结构C. 线性链表是非线性结D. 二叉树是线性结构
3.下列不属于描述数据逻辑结构的是(d)
a)线性表
b)树
c)图d)链表
4.数据结构包含的内容不包括(d)
a)线性结构
b)存储结构
c)逻辑结构d)数据运算
5.下列关于存储结构和逻辑结构描述正确的是(d)
a)存储结构和程序具体实现的语言没有关系b)算法的实现需要考虑逻辑结构
C)逻辑结构就是实际存储的结构d)算法的实现依赖于存储结构
6.一个算法的时间复杂度为T(n)= 2n13+3n^2+4n+5n^4+2,则该T(n)应记为(d)
a)O(n)
b)O(n12)c)O(n^3)d)O(n^4)
7.二叉树的第k层最多有几个节点(d)
a)2^k-1
b)2^k+1c)2k+1d)2^(k-1)
8.设指针变量p指向单链表中节点A,若删除单链表中的节点A,则需要修改指针的操作顺序为(a)
a)q= p->next,p->data = q->data;p-znext = q ->next,free(q);) b)q= p->next,q->data = p->data,p->next = q->next,free(q);c)q=p->next,p->next = q->next,free(q);
d)q = p->nextp->data = q->data;free(q);
9.—个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是(c)
a)edcba
b)decba
c)dceab
d)abcde
10.队和——般线性表区别主要在(d)
a)元素个数
b)元素类型
c)逻辑结构
d)插入、删除元素的位置
11.约瑟夫环问题中,有n个人,从第k个人数,数到第m个人出列,若n = 8,k= 3 m= 4,则正确的出队序列为:(a)
a)62743518b)62751843c)62734518d)62734518
12.顺序栈和链式栈的主要区别是(b)
a)逻辑结构不同
b)存储结构不同c)数据类型不同d数据存取方式不同
13.深度为k的完全二叉树中,最少有(b)个节点
a)2^(k-1)-1
b)2^(k-1)
c)2^(k-1)+1
d)2^k-1
14.对于二叉树的遍历算法,下面描述正确的是(a)
a)void pre_order(bitree* r
oot){ printf("%d ",root->data); pre_order(root->lchild);pre_order(root->rchild);
b)void in_order(bitree* root){ in_order(root->Ichild); in_order(root->rchild); printf("%d ",root->data);
c)void post_order(bitree* root){ post_order(root->lchild); printf("%d ",root->data);post_order(root->rchild);
d)void in_order(bitree* root){ printf("%d ",root->data); in_order(root->lchild); in_order(root->rchild);
15.光断有头单诞表head为空的条件是(b)
a)Head == NULL;
b)Head->next == NULL;
c)Head->next != NULL;
d)Head != NULL;
16.陈奕迅有首歌叫十年,吕珊有首歌叫3650夜.那现在问,十年不可能有多少天?(a)
a)3650
b)3651c)3652d)3653
文章介绍了学习数据结构的重要性,它关乎代码效率和解决问题的方法。逻辑结构包括线性、层次和网状结构,而存储结构涉及顺序、链式、索引和散列存储。线性表的特性是一对一关系,顺序表和链表各有优劣。此外,文章还涵盖了一些基础的算法问题和数据结构应用,如栈和队列的操作,以及二叉树的遍历等。
17万+

被折叠的 条评论
为什么被折叠?



