数据结构试题1

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构

1.向一个长度为n的顺序表中的第i个元素之前插入一个元素时,需要向后移动个元素。

答:n-i+1

2.在一个长度为n的顺序表中删除第i个元素时,需要向前移动元素。

答: n-i

3.在单链表中设置头结点的作用是。

答:简单插入、删除算法

4.在单链中要删除某一指定结点,必须找到该结点的结点。

答:直接前驱

5.访问单链表中的结点,必须沿着依次进行。

答:指针域

6.在双链表中每个结点有两个指针域,一个指向,一个指向。

答:直接前驱结点,直接后继结点

7.在链表中,删除最后一个结点的算法时间复杂度为O(1)。

答:双向循环

8.访问一个线性表中具有给定值的时间复杂度的数量级是。

答:O(n)

9.由n个数据元素生成一个顺序表,若每次都调用插入算法把一个元素插入到表头,则整个算法的时间复杂度为,若每次都调用插入算法把一个元素插入到表尾,则整个算法的时间复杂度为。答:O(n) ,O(n2)

10.在链表中,可以用表尾指针代替表头指针。

答:双向

11.在链表中,可以用表尾指针代替表头指针。

答:双向

12.根据n个数据元素建立对应的顺序表和单链表存储结构,其算法的时间复杂度最好的情况是,最坏的情况是。

答:O(n) ,O(n2)

13.求线性表的顺序存储和链式存储的长度的算法时间复杂度分别是和。

答:

O(1) , O(n)

14.在一个带头结点的单链表中,在表头插入或删除与在其他位置插入或删除,其操作过程是否相同?

答:相同

15.在一个不带头结点的单链表中,在表头插入或删除与在其他位置插入或删除,其操作过程是否相同?

答:不相同

16.阐述顺序表和链表存储方式的特点。

答:

顺序表存储方式为数据分配连续的存储单元,数据元素按逻辑顺序依次存储到相应存储单元中,使得逻辑相邻的数据元素物理也相邻,因此可以实现随即访问线性表的数据元素,即数据访问的时间复杂度为O(1)。

链表存储方式分配的存储单元可以不连续,通过每个结点的指针域来表示数据元素之间的逻辑关系,只能顺序访问线性表中的数据元素。

17.若频繁地对一个线性表进行插入和删除操作,则该线性表宜采用何种存储结构,为什么?

答:若频繁地对一个线性表进行插入和删除操作,则该线性表宜采用链式存储结构。因此链式存储结构在插入和删除数据元素时不需要移动数据元素,只需要修改结点的指针域就可以改变数据元素之间的逻辑关系。

18.在单链表、双向循环链表和单循环链表中,若仅知道指针p指向某结点,不知道头指针,能否将结点p从相应的链表中删除?若可以,时间复杂度各为多少。

答:要实现删除p结点的操作,必须找到其前驱结点,修改其指针域的值使其指向p的后继结点,以实现删除结点p。单链表不行,因此不知道头指针就无法找到结点p的前驱结点。双向循环链表和单循环链表可以可以实现删除p结点。单循环链表删除p结点的时间复杂度为O(n),双循环链表删除P结点的时间复杂度为O(1)。

19.对链表设置头结点的作用是什么?

答:

对带头结点的链表,在表的任何结点之前插入结点或删除任何位置的结点,所要做的都是修改前一个结点的指针域,因为在带头结点的链表中任何元素结点都有前驱结点。如果没有头结点,在首元结点前插入结点或删除首元结点都要修改头指针,其算法要比不带头结点的算法复杂些。

其次,带头结点的链表结构,初始化后的头指针就固定了,除撤销算法外,所有算法都不会修改头指针,可以减少出错的可能性。

20.已知一个线性表用含头结点的单链表做存储结构,写一个算法求单链表的长度。

答:

int listlenght(linklist L)

{ int length=0;

P=L->next;

while(p)

{ length++;

p=p->next;

}

return(length);

}

21.已知一个顺序表L,其中的元素按值递增有序排列,设计一个算法插入一个值为x的元素后保持该顺序表仍然递增有序,且空间复杂度为0(1)。

答:

void insertsq(sqlist L,elemtype x)

{ n=L.length-1;

if(LT(L.elem[n],x)

{ n++;

L.elem[n]=x;

}

else{

while(n>=0&<(x,L.elem[n])

{ L.elem[n+1]=L.elem[n];

n--;

}

L.elem[n+1]=L.elem[n];

}

return;

22.写一个算法,从顺序表中删除值为x的所有元素。

答:

void delallsq(Sqlist &L)

{ int i=0,j=0;

while(j

{ if(L.elem[j]!=x)

L.elem[i++]=L.elem[j];

j++;

}

L.longth=i;

}

23.数据的物理结构包括的表示和的表示。

答:线性结构 , 非线性结构

24.数据逻辑结构包括、、和四种,树结构和图结构统称为

答:集合、线性结构、树、图、非线性结构

25.数据结构研究的是和以及它们之间的相互关系,并对于这种结构定义相应的,设计出相应的。

答:逻辑结构,物理结构,运算,算法

相关文档
最新文档