1.数据元素是数据结构中讨论的最小单位。( )
2.二叉排序树是静态查找表。( )
3.有序表不可以使用顺序查找。( )
4.用折半查找方法查找一个线性表时,要求该线性表必须具有的特点是顺序存储且有序。 ( )
5.队列的存储结构只能用顺序表。( )
6.堆栈是后进先出的线性表。( )
7.如频繁对一个线性表进行插入和删除操作,则该线性表宜采用顺序存储结构。( )
8.树的深度是树中叶子结点所在的层次之和。( )
9.在二叉树的第 i 层上至多有2i-1 个结点。( )
10.算法设计与数据的存储结构有关。( )
11循环链表不是线性表. ( )
12线性表在链式存储时,查找第i个元素的时间同i的值成正比。( )
13顺序表中逻辑上相邻的元素物理位置不一定相邻。( )
你答案有问题噢 第一题,数据项是最小单位 第12题也有问题。。
第7题错的原因是 应该采用链式存储。。还有第5题应该是对的吧 只能用顺序表。。
……第1题是特意去书上找的,就是《数据结构教程(第二版)》(唐发根著)第2页第1行,一个字都木有打错……看来是书的问题了…… 第7题错的原因我不是说了吗…… 第12题我觉得我没错啊,不然给个反例吧…… 第5题队列是真的有链式存储结构的,如下
第五题队列的链式结构——这下你可以相信了吧……
#include
#include
#define Max 100
typedef struct node
{
int data;
struct node *link;
}QNode,*QLink;
int EmptyQLink();
QLink GetLinkQ();
QLink AddLinkQ();
QLink DelLinkQ();
void DesLinkQ();
int main()
{
QLink front,rear,p;
int a[Max],i=0,n;
front=rear=NULL;
while(scanf("%d",&a[i])==1)
{
i++;
if(getchar()=='\n')
break;
}
n=i;
for(i=0;idata=a[i];
p->link=NULL;
if(front==NULL)
front=p;
else
rear->link=p;
rear=p;
}
front=DelLinkQ(front);
while(front!=NULL)
{
printf("%d ",front->data);
front=front->link;
}
printf("\n");
}
//测试链接队列是否为空
int EmptyQLink(QLink front)
{
return front==NULL;
}
//取当前队头元素
QLink GetLinkQ(QLink front,int item)
{
if(EmptyQLink(front))
return NULL;
return front;
}
//链接队列的插入
QLink AddLinkQ(QLink front,QLink rear,int item)
{
QLink p;
p=(QLink)malloc(sizeof(QNode));
p->data=item;
p->link=NULL;
if(front==NULL)
front=p;
else
rear->link=p;
rear=p;
return rear;
}
//链接队列的删除
QLink DelLinkQ(QLink front)
{
QLink p;
if(EmptyQLink(front))
return NULL;
p=front;
front=front->link;
free(p);
return front;
}
//链接队列的销毁
void DesLinkQ(QLink front,QLink rear)
{
while(front)
{
rear=front->link;
free(front);
front=rear;
}
}
关于数据结构的几个问题 判断对与错。也请解释下
4.对的 5.错的 也可以用链表或者是循环链表 6.对的 这就是堆栈的特性,和队列不同,队列是先进先出 7.错的 更适合采用链式存储结构,否则插入或删除一个元素要移动很多元素,耗费时间复杂度 8.错的 树的深度是树中结点的最大层次数 9.错的 最多有2的i-1次方个结点(这是不是你打不出来那...