给出以下算法的时间复杂度

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

第1章绪论

1、填空题

1.常见的数据结构有_________结构,_________结构,_________结构等三种。

2.常见的存储结构有_________结构,_________结构等两种。

3.数据的基本单位是_________,它在计算机中是作为一个整体来处理的。

4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,_________和_________。

2、应用题

1、给出以下算法的时间复杂度.

void fun(int n)

{

int i=1,k=100;

while(i

{

k=k+1;

i=i+2;

}

}

时间复杂度为_______________。

2、给出以下算法的时间复杂度.

void fun2(int n)

{

int i=1,k=100;

while(i

{

i=i*10;

k=k+1;

}

}

时间复杂度为_______________。

第2章线性表

1、填空题

1. 线性表按照存储结构不同主要有两种实现方式,一种是_______________表,另一种是_______________表。

2.顺序表采用_______________访问机制对数据元素进行访问。

3.若在单链表结点p的后面插入一个新的结点s,则其操作序列为:

①_____________________________;

②_____________________________;

4.在单向链表中,若要删除某个结点p,必须要找到_______________结点,才能实现该操作。

2、选择题

1.将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数

是。

(A)n (B)2n-1 (C)2n (D)n-1

2.在单链表中,如果在结点p之后插入一个新结点s,其操作为。

(A)s->next=p->next; p->next=s;

(B)p->next=s; s->next=p->next;

(C)s->next=p; p->next=s->next;

(D)p->next=s; s->next=p;

3.若长度为n的线性表采用顺序存储结构,在其第i个位置删除一个元素的算法的平均时间复杂度为( )。(1≤i≤n)

A.O(0) B.O(1) C.O(n) D.O(n2)

4. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素需要移动的元素个数为( )。(1≤i≤n+1)

A.n-i B.n-i+1 C. i D.n-i-1

3、判断题

1.线性表中每一个元素都有一个前驱和一个后继。()

4、程序设计题

1、单链表的结点结构定义如下:

struct LinkNode

{

LinkNode *next;

int data;

};

请根据述函数的功能写程序。(10分)

void Insert(LinkNode *h,LinkNode *s)

{//h指向链表的头结点(即使链表中没有元素,头结点也存在。)

//链表中元素已经递增有序

//函数功能为将结点s插入到链表h中。插入后链表仍然保持递增的顺序}

2、设顺序表L是一个递增有序表,试写一算法,将x插入L中,并使L 仍是一个有序表。顺序表的结构定义如下:

#define ListSize 100 // 假定表空间大小为100

struct SqList {

int elem[ListSize]; // 数组elem用于存放表中的数据

int length; // 当前的表长度

};

//以上为顺序表的结构

//函数头定义如下

void InsertIncreaseList( SqList &L ,int x )

{

}

///////

3、单链表中结点的结构如下所示:

typedef struct node

{ int data;

struct node *next;

}node;

请设计满足下述功能的函数。

要求:建立带头结点的单链表H,要求函数从屏幕上读入m个整数,每读入一个,便生成相应的结点,并且把它插入到链表H的尾部。函数形式为void CreateLinkList(node *H)。(10分)

第3章栈和队列

1、填空题

1.栈和队列在本质上都是_____________。

2.栈的操作特点是_____________。队列的操作特点是_____________。

3.栈和队列是一种特殊的_____________,栈的特点是_____________;队列的特点是_____________。

2、选择题

1.消除递归不一定需要使用栈,此说法_______。

A. 正确

B. 错误

2.对于栈,输入序列为(1,2,3,4),不可能得到的输出序列有_______。

(A)(1,2,3,4)(B)(4,3,2,1)

(C)(1,3,4,2)(D)(3,1,2,4)

3.用单循环链表表示队列,正确的说法是。

(A)可设一个头指针使入队、出队都方便;

(B)可设一个尾指针使入队、出队都方便;

(C)必须设头尾指针才能使入队、出队都方便;

(D)无论如何,只可能使入队方便。

3、判断题

1.栈的特点是先进先出。()

2.可以在队列的任意位置插入元素。()

3.递归程序化非递归程序必须用到栈。()

4.如果进栈的序列为(1,2,3,4),则(4,2,3,1)不可能是出栈序列。

()

5.在用顺序表表示的循环队列中,可用标志位来区分队空或队满的条件。

()第4章串

1、选择题

1. 设有两个串p和q,求q在p中首次出现的位置的运算称作()

A.连接 B.模式匹配 C.求子串 D.求串长

2、判断题

1.空串和空格串是同一个概念,二者没有区别。()

相关文档
最新文档