给出以下算法的时间复杂度
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.空串和空格串是同一个概念,二者没有区别。()