① 线性表的顺序存储结构和链式存储结构分别适用于什么场合
预先能够确定线性表长度;数据间有一定的依赖关系;数据和位置有关系时一般工顺序存储方便,否则,动态分配空间,链式存储方便,
② 线性表的存储方式即可是顺序方式
( T )1.线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。
( T)2. 栈和队列的存储方式既可是顺序方式,也可是链接方式。
( T )3.二维数组是其数组元素为线性表的线性表。
( T )4. 对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i—1个结点。
( F)5.线性表的顺序存储表示优于链式存储表示。
( F )6. 具有12个结点的完全二叉树有5个度为2的结点。
( F )7.线性表的逻辑顺序与物理顺序总是一致的。
( F )8. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。
( T )9.每种数据结构都应具备三种基本运算:插入、删除和搜索。
三、 单项选择题
( C )1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:
(A)存储结构 (B)逻辑结构 (C)顺序存储结构 (D)链式存储结构
( B )2.一个顺序表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是 b
(A)110 (B)108 (C)100 (D)120
( D)3. 下面关于线性表的叙述中,错误的为()
A. 顺序表使用一维数组实现的线性表B. 顺序表必须占用一片连续的存储单元
C. 顺序表的空间利用率高于链表D. 在链表中,每个结点只有一个链域
( C )4.请指出在顺序表{2、5、7、10、14、15、18、23、35、41、52}中,用二分法查找关键码12需做多少次关键码比较。 (C)
A.2 B.3 C.4 D.5
( B )5. 在需要经常查找结点的前驱与后继的场合中,使用 比较合适。
A. 单链表B. 双链表C. 顺序表D. 循环链表( B )
( B )6 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动 个元素
(A)8 (B)63.5 (C)63 (D)7
( D )7. 判定一个队列QU(最多元素为m0)为满队列的条件是_______
(A)QU->rear - QU->front = = m0 (B)QU->rear - QU->front -1= = m0
(C)QU->front = = QU->rear (D)QU->front = = QU->rear+1
( C )8. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为
(A)i (B)n=i (C)n-i+1 (D)不确定
( C )9.算法分析的目的是:
A. 找出数据结构的合理性B. 研究算法中的输入/输出关系
C. 分析算法的效率以求改进D. 分析算法的易读性
( C )10按照二叉树的定义,具有3 个结点的二叉树有()种。
A.3 B.4 C.5 D.6
答案是正确的 呵呵 你这些题的答案我都有 还有你以后的答案我也有 要的话以后再问我要啊
③ 线性表的顺序存储结构是随机存取的
可以参考下面几种解释
1、解释一:
顺序存储结构的地址在内存中是连续的所以可以通过计算地址实现随机存取,与此相对 链式存储结构的存储地址不一定连续,只能通过第个结点的指针顺序存取
2、解释二:
线性表的顺序存储结构可以通过线性表的首址加偏移的方法计算出来第i个数据的位置a+i*sizeof(单个结构)而线性表的链式存储结构要访问第i个数据,就必须先访问前面的i-1个数据
(3)线性表顺序存储扩展阅读:
线性表主要由顺序表示或链式表示,在实际应用中,常以栈、队列、字符串等特殊形式使用,顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存储结构或顺序映像,顺序存储结构是随机存取的。
链式表示指的是用一组任意的存储单元存储线性表中的数据元素,称为线性表的链式存储结构。它的存储单元可以是连续的,也可以是不连续的。
④ 线性表的顺序存储的缺点
线性顺序存储的缺点:(1)插入或删除的运算效率很低。在顺序存储的线性表中,插入或删除数据元素时需要移动大量的数据元素;(2)线性表的顺序存储结构下,线性表的存储空间不便于扩充;(3)线性表的顺序结构不便于对存储空间的动态分配。
⑤ 在实际的开发中,什么时候用到线性表的顺序存储结构
顺序存储很常见的就是数组,但链式存储我们很少直接使用的.
⑥ C语言线性表顺序存储
建链表的函数用引用就好了
#include"stdafx.h"
#include<stdio.h>
#include<stdlib.h>
//-------------------
#defineMAXSIZE100//Thelargestnumberofpeople
typedefintElemType;
typedefstruct
{
ElemTypedata[MAXSIZE];
ElemTypepassward[MAXSIZE];
intlength;
}seqList;
seqList*L;
voidCreaList(seqList*&L,int[MAXSIZE],intn);/////引用
voidPrintList(seqList*L,intn);//不一致
intmain(void)
{
intn=0,m=0;
inta[MAXSIZE];
do
{
if(n>MAXSIZE)
{
printf("Thenumberofpeopletoomuch,pleaseinputagain! ");
}
printf("Pleaseenterthenumberofpeople(upto%d):",MAXSIZE);
scanf_s("%d",&n);
}while(n>MAXSIZE);
printf("Pleaseentertheinitailpassword:");
scanf_s("%d",&m);
CreaList(L,a,n);
printf("--------printthelineartable-------- ");
PrintList(L,n);
printf("初始化成功... ");
system("pause");
}
voidCreaList(seqList*&L,inta[MAXSIZE],intn)/////引用
{
intiPassword;
L=(seqList*)malloc(sizeof(seqList));
for(inti=1;i<=n;i++)
{
L->data[i]=a[i];
printf("Pleaseenterthe%dpersonalpassword:",i);
scanf_s("%d",&iPassword);
L->passward[i]=iPassword;
}
L->length=n;
}
voidPrintList(seqList*L,intn)
{
for(inti=1;i<=n;i++)
{
printf("--------ID---------PASSWORD-------- ");
printf("%6d%5d ",L->data[i],L->passward[i]);
}
}
⑦ 线性存储结构就是顺序存储结构吗线性表是线性存储结构吗
不是,他们的关系可以如图所示。线性表包括顺序存储结构和链式存储结构。
拓展资料:
线性表的划分是从数据的逻辑结构上进行的。线性指的是在数据的逻辑结构上是线性的。即在数据元素的非空有限集中
(1)存在唯一的一个被称作“第一个”的数据元素,(2)存在唯一的一个被称作“最后一个”的数据元素,(3)除第一个外,集合中的每个数据元素均只有一个前继元素,(4)除最后一个外,集合中的每个数据元素均只有一个后继元素。
那么对于线性表,从存储结构上分,可以有顺序存储结构和链式存储结构。顺序存储结构包括顺序表、顺序队列和顺序栈;链式存储结构包括链表、链队列和链栈。
⑧ ⑴ 线性表的顺序存储结构是一种( )的存储结构,线性表的链接存储结构是一种( )的存储结构
线性表的顺序存储结构是一种随机存取的存储结构
线性表的链式存储结构,是一种物理存储单元上非连续、非顺序的存储结构
⑨ 线性表的顺序存储结构是以什么来表示数据元素之间的逻辑关系的
线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。
线性表主要由顺序表示或链式表示。在实际应用中,常以栈、队列、字符串等特殊形式使用。
顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存储结构或顺序映像(sequential mapping)。它以“物理位置相邻”来表示线性表中数据元素间的逻辑关系,可随机存取表中任一元素。
由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序设计语言(例如c/c++)的数组来描述的。
顺序存储结构的主要优点是节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑c/c++语言中数组需指定大小的情况),结点之间的逻辑关系没有占用额外的存储空间。
采用这种方法时,可实现对结点的随机存取,即每一个结点对应一个序号,由该序号可以直接计算出来结点的存储地址。但顺序存储方法的主要缺点是不便于修改,对结点的插入、删除运算时,可能要移动一系列的结点。
推荐课程:C语言教程。
线性表顺序存储结构的结构代码:
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length; // 线性表当前长度
} SqList;
顺序存储结构封装需要三个属性:
存储空间的起始位置,数组data,它的存储位置就是线性表存储空间的存储位置。
线性表的最大存储容量:数组的长度MaxSize。
线性表的当前长度:length。
注意:数组的长度与线性表的当前长度需要区分一下:数组的长度是存放线性表的存储空间的总长度,一般初始化后不变。而线性表的当前长度是线性表中元素的个数,是会变化的。
线性表顺序存储结构的优缺点
线性表的顺序存储结构,在存、读数据时,不管是哪个位置,时间复杂度都是O(1)。而在插入或删除时,时间复杂度都是O(n)。
这就说明,它比较适合元素个数比较稳定,不经常插上和删除元素,而更多的操作是存取数据的应用。
优点:
无须为表示表中元素之间的逻辑关系而增加额外的存储空间。
可以快速地存取表中任意位置的元素。
缺点:
插上和删除操作需要移动大量元素。
当线性表长度变化较大时,难以确定存储空间的容量。
容易造成存储空间的“碎片”
⑩ 线性表的顺序存储结构用C++实现
线性表的顺序存储结构用C++实现代码:
#include "pch.h"
#include <stdio.h>
#include <malloc.h>
//#define DATA int
typedef int DATA;
struct SNode
{
DATA data;
SNode* pNext;
};
SNode* g_pHead = NULL;
void AddHead(DATA data)
{
SNode* p = (SNode*)malloc(sizeof(SNode));
p->data = data;
p->pNext = g_pHead;
g_pHead = p;
}
void Print()
{
SNode* p = g_pHead;
printf("List:");
while (p)//当节点的地址不为NULL
{
printf("%d ", p->data);
p = p->pNext;
}
printf("
");
}
int main()
{
AddHead(1);
AddHead(2);
AddHead(3);
Print();
return 0;
}
程序运行结果如下:
(10)线性表顺序存储扩展阅读:
双向链表框架:
#pragma once
typedef void* POSITION;
typedef int DATA;
struct SNode
{
DATA data;
SNode *pPrev, *pNext;
};
class CList
{
SNode *m_pHead, *m_pTail;
int m_nCount;
public:
CList();
~CList();
void RemoveAll();
DATA GetNext(POSITION &pos);
DATA GetPrev(POSITION &pos);
void AddHead(DATA data);
void AddTail(DATA data);
void RemoveAt(POSITION pos);
};