1.线性表是( A)。
A.一个有限序列,可以为空
B.一个有限序列,不可以为空
C.一个无限序列,可以为空
D.一个无限序列,不可以为空
2.线性表的基本运算ListInsert(&L,i,e)表示在线性表L中第i个位置上插入一个元素e,若L的长度为n,则i的合法取值是( B)。
A.1≤i≤n
B.1≤i≤n+1
C.0≤i≤n-1
D.0≤i≤n
3.顺序表具有随机存取特性,指的是( C)。
A.查找值为x的元素与顺序表中元素个数n无关
B.查找值为x的元素与顺序表中元素个数n有关
C.查找序号为i的元素与顺序表中元素个数n无关
D.查找序号为i的元素与顺序表中元素个数n有关
4.在顺序表中删除一个元素所需要的时间( A)。
A.与删除元素的位置及顺序表的长度都有关
B.只与删除元素的位置有关
C.与删除任何其他元素所需要的时间相等
D.只与顺序表的长度有关
5.在n(n>1)个运算的顺序表中,算法时间复杂度为O(1)的运算是( A)。
A.访问第i个元素(2≤i≤n)并求其前驱元素
B.在第i个元素之后插入一个新元素
C.删除第i个元素
D.将这n个元素递增排序
6.关于线性表的顺序存储结构和链式存储结构的描述中,正确的是( B)。
Ⅰ.线性表的顺序存储结构优于链式存储结构
Ⅱ.顺序存储结构比链式存储结构的存储密度高
Ⅲ.如需要频繁插入和删除元素,最好采用顺序存储结构
Ⅳ.如需要频繁插入和删除元素,最好采用链式存储结构
A.Ⅰ、Ⅱ、Ⅲ
B.Ⅱ、Ⅳ
C.Ⅱ、Ⅲ
D.Ⅲ、Ⅳ
7.在单链表中,增加一个头节点的目的是为了(C )。
A.使单链表至少有一个节点
B.标识链表中某个重要节点的位置
C.方便插入和删除运算的实现
D.表示单链表是线性表的链式存储结构
8.通过含有n(n≥1)个元素的数组a,采用头插法建立一个单链表L,则L中节点值的次序(B )。
A.与数组a的元素次序相同
B.与数组a的元素次序相反
C.与数组a的元素次序无关
D.以上都不对
9.某算法在含有n(n≥1)个节点的单链表中查找值为x节点,其时间复杂度是( D)。
A.

B.O(1)
C.

D.O(n)
10.在长度为n(n≥1)的单链表中删除尾节点的时间复杂度为(C )。
A.O(1)
B.

C.O(n)
D.

11.关于线性表的正确说法是(D )。
A.每个元素都有一个前驱和一个后继元素
B.线性表中至少有一个元素
C.表中元素的排序顺序必须是由小到大或由大到小
D.除第一个元素和最后一个元素外,其余每个元素有且仅有一个前驱和一个后继元素
12.以下关于顺序表的叙述中,正确的是( C)。
A.顺序表可以利用一维数组表示,因此顺序表与一维数组在结构上是一致的,它们可以通用
B.在顺序表中,逻辑上相邻的元素在物理位置上不一定相邻
C.顺序表和一维数组一样,都可以进行随机存取
D.在顺序表中每一个元素的类型不必相同
13.以下属于顺序表的优点是( C)。
A.插入元素方便
B.删除元素方便
C.存储密度大
D.以上都不对
14.设线性表中有n个元素,以下运算中,(A )在单链表上实现要比在顺序表上实现效率更高。
A.删除指定位置元素的后一个元素
B.在尾元素的后面插入一个新元素
C.顺序输出前k个元素
D.交换第i个元素和第n-i+1个元素的值(i=1,2,…,n)
15.以下关于单链表的叙述中正确的是(C )。
Ⅰ.节点除自身信息外还包括指针域,存储密度小于顺序表
Ⅱ.找第i个节点的时间为O(1)
Ⅲ.在插入、删除运算时不必移动节点
A.仅Ⅰ、Ⅱ
B.仅Ⅱ、Ⅲ
C.仅Ⅰ、Ⅲ
D.Ⅰ、Ⅱ、Ⅲ
1 .设计一个算法,查找非空顺序表L中第一个最大的元素,并返回该元素的逻辑序号。
typedef struct
{
int data[MaxSize];
int length;
}SqList;
int max(SqList *L)
{
int maxl=L->data[0];
int i=1,m;
while(ilength)
{
if(maxldata[i])
{
maxl=L->data[i];
m=i;
}
}
return m;
}
2 .对于带头节点的单链表L1,其节点类型为LinkList,指出以下算法的功能。
void fun(LinkList *&L,ElemType x,ElemType y)
{ LinkList *p=L->next;
while (p!=NULL)
{ if (p->data= =x)
p->data=y;
p=p->next;
}
}
解:将链表中值为x的元素换成值为y。
3 .以下算法用于统计带头节点的单链表L中节点值等于给定值x的节点数的算法,其中存在错误,请指出错误的地方并修改为正确的算法。
int count(LinkList *L,ElemType x)
{ int n=0;
while (L! =NULL)
{ L=L->next;
if (L->data= =x) n++;
}
return n;
}
解:
我认为建表时头节点是从一个空表开始的,所以刚开始时L= =NULL,循环不能进行,所以应改为(L->next)!=NULL。
int count(LinkList *L,ElemType x)
{ int n=0;
while ((L->next)!=NULL)
{ L=L->next;
if (L->data= =x) n++;
}
return n;
}
4 .某非空单链表L中所有元素为整数,设计一个算法将所有小于零的节点移到所有大于等于零的节点的前面。
#include
#include
using namespace std;
typedef struct
{
int data[10];
int length;
}SqList;
*void move(SqList &L)
{
int i=0,j=L->length-1;
int temp;
while(i<j)
{
while(i<j&&L->data[j]>=0)
j–;
while(i<j&&L->data[i]<0)
i++;
if(i<j)
{
temp=L->data[i];
L->data[i]=L->data[j];
L->data[j]=temp;
}
}
}

void createlist(SqList *&L,int a[],int n)
{
int i;
L=(SqList *)malloc(sizeof(SqList));
for(i=0;i<n;i++)
L->data[i]=a[i];
L->length=n;
}
void display(SqList *L)
{
int i;
for(i=0;ilength;i++)
cout<data[i]<<" “;
}
int main()
{
int a[10]={-1,0,-1,9,0,2,-4,0,-3,-9};
SqList *L;
createlist(L,a,10);
move(L);
display(L);
return 0;
}
//不太确定,写了全部的程序
*//在定义实参的时候遇到了问题,SqList &L是指针的引用,所以实参应该是指针类型的。
5 .有一个由整数元素构成的非空单链表A,设计一个算法,将其拆分成两个单链表A和B,使得A单链表中含有所有的偶数节点,B单链表中含有所有的奇数节点,且保持原来的相对次序。
想法:1.A重新创建一个节点,B重新创建一个节点
2.保持原来的相对次序,则使用尾插法建表
#include
#include
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}LinkList;
void split(LinkList *&L,LinkList *&L1,LinkList *&L2)
{
LinkList *r=L->next,*t;
L1=(LinkList *)malloc(sizeof(LinkList));
L1->next=NULL;
L2=(LinkList *)malloc(sizeof(LinkList));
L2->next=NULL;
while(r!=NULL)
{
t=r->next;
if((r->data)%2==0)
{
r->next=L1->next;
L1->next=r;
}
else
{
r->next=L2->next;
L2->next=r;
}
r=t;
}
}
void creatlistf(LinkList *&L,int a[],int n)
{
LinkList *s;
int i;
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
s->next=L->next;
L->next=s;
}
}
void display(LinkList *L)
{
LinkList *p=L->next ;
while(p!=NULL)
{
cout<data <<” ";
p=p->next ;
}
cout<<endl;
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
LinkList *L,*L1,*L2;
creatlistf(L,a,10);
split(L,L1,L2);
display(L1);
display(L2);
return 0;
}
//输入数据时采用头插法,所以数据为10,9,8,7,6,5,4,3,2,1.分开链表时也采用头插法,和原来的数据顺序相同。

MOOC数据结构 第二周相关推荐

  1. 「数据结构」普林斯顿算法课第二周作业

    「数据结构」普林斯顿算法课第二周作业 Algorithm I, Princeton 编程作业: Deques and Randomized Queues 思路 Deque.java Randomize ...

  2. 20162330 2017-2018-1《程序设计与数据结构》第二周学习总结

    2017-2018-1 学习总结目录: 1 2 3 5 6 7 9 10 11 12 目录 0. 本周学习内容总结 0.1 Comparable接口与Comparator接口的使用 0.2 泛型方法设 ...

  3. 20172304 《程序设计与数据结构》 第二周学习总结

    20172304 <程序设计与数据结构>第二周学习总结 教材学习内容总结 本周主要学习了第三章和第四章的内容 第三章 集合概述--栈 3.1集合 集合是一种聚集组织了其他对象的对象. 集合 ...

  4. MOOC《Python语言程序设计》(第15次)基本图形绘制(第二周)

    MOOC<Python语言程序设计>(第15次) Python基本图形绘制(第二周)21.7.7 文章目录 MOOC<Python语言程序设计>(第15次) Python基本图 ...

  5. 201871010128-杨丽霞《面向对象程序设计(java)》第二周学习总结

    201871010128-杨丽霞<面向对象程序设计(java)>第二周学习总结 项目 内容 这个作业属于哪个课程 <https://www.cnblogs.com/nwnu-daiz ...

  6. LINUX内核分析第二周学习总结——操作系统是如何工作的

    LINUX内核分析第二周学习总结--操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  7. 20162313苑洪铭 第二周作业

    20162313苑洪铭 2006-2007-2 <程序设计与数据结构>第2周学习总结 教材学习内容总结 学习字符串的使用 学会转义字符的运用 学习使用表达式 学习重要的Scanner 代码 ...

  8. 深度学习笔记 第五门课 序列模型 第二周 自然语言处理与词嵌入

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

  9. 深度学习笔记 第四门课 卷积神经网络 第二周 深度卷积网络:实例探究

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

最新文章

  1. 独家 | 支持向量机背后的数学 -对于SVM背后的数学和理论解释的快速概览及如何实现...
  2. 民用报警服务技术浅谈
  3. SAP ABAP里数据库表的Storage Parameters从哪里来的
  4. system-config-kickstart报错
  5. 运行pip报错:Fatal error in launcher: Unable to create process using '’路径’'
  6. Java对象内存结构
  7. [剑指offer]面试题第[37]题[Leedcode][JAVA][第297题][二叉树列的序列化与反序列化][递归][BFS]
  8. java用正则表达式 编写简单词法分析器_500+ 精选 Java 面试题大放送
  9. 如何在您的笔记本上搭建View 演示环境 -7.无线配置与连接
  10. 微信服务号开发IOS设备js-sdk认证失败问题总结
  11. 集成测试之自顶向下、自底向上、三明治集成
  12. html ckplayer.swf,Flash基础入门之ckplayer.js视频播放插件
  13. 【C语言】扫雷(递归展开 + 标记功能)
  14. 计算机课程之间的关系
  15. JAVA运行内存的设置
  16. 微信发红包、QQ登录、搜索框、水杯、聊天窗口、两台电梯、微信/淘宝支付、笔、 抖音发布短视频等功能测试用例
  17. 高端家政保洁服务网站搭建模板
  18. windows中oracle自动备份
  19. Android设备,查看已连接的Wifi密码
  20. 使用Tasker实现Android系统的短信自动发送及转发

热门文章

  1. ASTERISK 拨号方案基础
  2. Postman+Newman执行自动化测试
  3. 电子取证和司法鉴定笔记
  4. CListCtrl控件使用
  5. 星起航:抖音小店体验分高有哪些好处?
  6. 计算机组成指令系统的论文,计算机组成原理探讨论文
  7. 聊一聊期货反向跟单百科知识
  8. 银行为什么要以科技岗招人然后让人干两年柜员?
  9. J2EE高级软件工程师面试题集
  10. 《Effective C艹》读书笔记(3)