第2章线性表课后习题答案

第2章线性表课后习题答案
第2章线性表课后习题答案

第2章线性表

1.选择题

(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。

A.110 B.108C.100 D.120

(2)在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。

A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)

B.在第i个结点后插入一个新结点(1≤i≤n)

C.删除第i个结点(1≤i≤n)

D.将n个结点从小到大排序

(3)向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动的元素个数为()。

A.8 B.63.5C.63 D.7

(4)链接存储的存储结构所占存储空间()。

A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针

B.只有一部分,存放结点值

C.只有一部分,存储表示结点间关系的指针

D.分两部分,一部分存放结点值,另一部分存放结点所占单元数

(5)线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。

A.必须是连续的B.部分地址必须是连续的

C.一定是不连续的D.连续或不连续都可以

(6)线性表L在()情况下适用于使用链式结构实现。

A.需经常修改L中的结点值B.需不断对L进行删除插入

C.L中含有大量的结点D.L中结点结构复杂

(7)单链表的存储密度()。

A.大于1 B.等于1 C.小于1 D.不能确定

(8)将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是()。

A.n B.2n-1 C.2n D.n-1

(9)在一个长度为n的顺序表中,在第i个元素(1≤i≤n+1)之前插入一个新元素时须向后移动()个元素。

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

(10) 线性表L=(a1,a2,……a n),下列说法正确的是()。

A.每个元素都有一个直接前驱和一个直接后继

B.线性表中至少有一个元素

C.表中诸元素的排列必须是由小到大或由大到小

D.除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继。

(11) 若指定有n个元素的向量,则建立一个有序单链表的时间复杂性的量级是()。

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

(12) 以下说法错误的是()。

A.求表长、定位这两种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低

B.顺序存储的线性表可以随机存取

C.由于顺序存储要求连续的存储区域,所以在存储管理上不够灵活

D.线性表的链式存储结构优于顺序存储结构

(13) 在单链表中,要将s所指结点插入到p所指结点之后,其语句应为()。

A.s->next=p+1; p->next=s;

B.(*p).next=s; (*s).next=(*p).next;

C.s->next=p->next; p->next=s->next;

D.s->next=p->next; p->next=s;

(14) 在双向链表存储结构中,删除p所指的结点时须修改指针()。

A.p->next->prior=p->prior; p->prior->next=p->next;

B.p->next=p->next->next; p->next->prior=p;

C.p->prior->next=p; p->prior=p->prior->prior;

D.p->prior=p->next->next; p->next=p->prior->prior;

(15) 在双向循环链表中,在p指针所指的结点后插入q所指向的新结点,其修改指针的操作是()。

A.p->next=q; q->prior=p; p->next->prior=q; q->next=q;

B.p->next=q; p->next->prior=q; q->prior=p; q->next=p->next;

C.q->prior=p; q->next=p->next; p->next->prior=q; p->next=q;

D.q->prior=p; q->next=p->next; p->next=q; p->next->prior=q;

2.算法设计题

(1)将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。

void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){

pa=La->next; pb=Lb->next;

Lc=pc=La; //用La的头结点作为Lc的头结点

while(pa && pb){

if(pa->datadata){ pc->next=pa;pc=pa;pa=pa->next;}

else if(pa->data>pb->data) {pc->next=pb; pc=pb; pb=pb->next;}

else {// 相等时取La的元素,删除Lb的元素

pc->next=pa;pc=pa;pa=pa->next;

q=pb->next;delete pb ;pb =q;}

}

pc->next=pa?pa:pb; //插入剩余段

delete Lb; //释放Lb的头结点}

(2)将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中允许有重复的数据。

void union(LinkList& La, LinkList& Lb, LinkList& Lc, ) {

pa = La->next; pb = Lb->next; // 初始化

Lc=pc=La; //用La的头结点作为Lc的头结点

Lc->next = NULL;

while ( pa || pb ) {

if ( !pa ) { q = pb; pb = pb->next; }

else if ( !pb ) { q = pa; pa = pa->next; }

else if (pa->data <= pb->data ) { q = pa; pa = pa->next; }

else { q = pb; pb = pb->next; }

q->next = Lc->next; Lc->next = q; // 插入

}

delete Lb; //释放Lb的头结点}

(3)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出A与B的交集,并存放于A链表中。

void Mix(LinkList& La, LinkList& Lb, LinkList& Lc, ) {

pa=la->next;pb=lb->next;∥设工作指针pa和pb;

Lc=pc=La; //用La的头结点作为Lc的头结点

while(pa&&pb)

if(pa->data==pb->data)∥交集并入结果表中。

{ pc->next=pa;pc=pa;pa=pa->next;

u=pb;pb=pb->next; delete u;}

else if(pa->datadata) {u=pa;pa=pa->next; delete u;}

else {u=pb; pb=pb->next; delete u;}

while(pa){ u=pa; pa=pa->next; delete u;}∥ 释放结点空间

while(pb) {u=pb; pb=pb->next; delete u;}∥释放结点空间

pc->next=null;∥置链表尾标记。

delete Lb; ∥注:本算法中也可对B表不作释放空间的处理

(4)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和B 的差集(即仅由在A中出现而不在B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。

void Difference(LinkedList A,B,*n)

∥A和B均是带头结点的递增有序的单链表,分别存储了一个集合,本算法求两集合的差集,存储于单链表A中,*n是结果集合中元素个数,调用时为0

{p=A->next;∥p和q分别是链表A和B的工作指针。

q=B->next; pre=A;∥pre为A中p所指结点的前驱结点的指针。

while(p!=null && q!=null)

if(p->datadata){pre=p;p=p->next;*n++;} ∥ A链表中当前结点指针后移。

else if(p->data>q->data)q=q->next;∥B链表中当前结点指针后移。

else {pre->next=p->next;∥处理A,B中元素值相同的结点,应删除。

u=p; p=p->next; delete u;} ∥删除结点

(5)设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A的元素类型为整型,要求B、C表利用A表的结点)。

(6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。

ElemType Max (LinkList L ){

if(L->next==NULL) return NULL;

pmax=L->next; //假定第一个结点中数据具有最大值

p=L->next->next;

while(p != NULL ){//如果下一个结点存在

if(p->data > pmax->data) pmax=p;

p=p->next;

}

return pmax->data;

(7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。

void inverse(LinkList &L) {

// 逆置带头结点的单链表 L

p=L->next; L->next=NULL;

while ( p) {

q=p->next; // q指向*p的后继

p->next=L->next;

L->next=p; // *p插入在头结点之后

p = q;

}

}

(8)设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink 和maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同)。

void delete(LinkList &L, int mink, int maxk) {

p=L->next; //首元结点

while (p && p->data<=mink)

{ pre=p; p=p->next; } //查找第一个值>mink的结点

if (p) {

while (p && p->datanext;

// 查找第一个值≥maxk 的结点

q=pre->next; pre->next=p; // 修改指针

while (q!=p)

{ s=q->next; delete q; q=s; } // 释放结点空间

}//if

}

(9)已知p指向双向循环链表中的一个结点,其结点结构为data、prior、next三个域,写出算法change(p),交换p所指向的结点和它的前缀结点的顺序。

知道双向循环链表中的一个结点,与前驱交换涉及到四个结点(p结点,前驱结点,前驱的前驱结点,后继结点)六条链。

void Exchange(LinkedList p)

∥p是双向循环链表中的一个结点,本算法将p所指结点与其前驱结点交换。

{q=p->llink;

q->llink->rlink=p;∥p的前驱的前驱之后继为p

p->llink=q->llink;∥p的前驱指向其前驱的前驱。

q->rlink=p->rlink;∥p的前驱的后继为p的后继。

q->llink=p;∥p与其前驱交换

p->rlink->llink=q;∥p的后继的前驱指向原p的前驱

p->rlink=q;∥p的后继指向其原来的前驱

}∥算法exchange结束。

(10)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。

[题目分析] 在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第i个元素,第i+1至第n个元素要依次前移)。本题要求删除线性表中所有值为item的数据元素,并未要求元素间的相对位置不变。因此可以考虑设头尾两个指针(i=1,j=n),从两端向中间移动,凡遇到值item的数据元素时,直接将右端元素左移至值为item的数据元素位置。

void Delete(ElemType A[ ],int n)

∥A是有n个元素的一维数组,本算法删除A中所有值为item的元素。

{i=1;j=n;∥设置数组低、高端指针(下标)。

while(i

{while(i

if(i

if(i

}

[算法讨论] 因元素只扫描一趟,算法时间复杂度为O(n)。删除元素未使用其它辅助空间,最后线性表中的元素个数是j。

线性代数(李建平)习题答案详解__复旦大学出版社

线性代数课后习题答案 习题一 1.2.3(答案略) 4. (1) ∵ (127435689)415τ=+= (奇数) ∴ (127485639)τ为偶数 故所求为127485639 (2) ∵(397281564)25119τ=+++= (奇数) ∴所求为397281564 5.(1)∵(532416)421106τ=++++= (偶数) ∴项前的符号位()6 11-=+ (正号) (2)∵325326114465112632445365a a a a a a a a a a a a = (162435)415τ=+= ∴ 项前的符号位5(1)1-=- (负号) 6. (1) (2341)(1)12n n τ-?L L 原式=(1)(1)!n n -=- (2)()((1)(2)21) 1(1)(2)21n n n n n n τ--??---??L L 原式=(1)(2) 2 (1) !n n n --=- (3)原式=((1)21) 12(1)1(1) n n n n n a a a τ-?--L L (1) 2 12(1)1(1)n n n n n a a a --=-L 7.8(答案略) 9. ∵162019(42)0D x =?-?+?--?= ∴7x = 10. (1)从第2列开始,以后各列加到第一列的对应元素之上,得 []11(1)1110 01(1)1110 (1)1 1 (1)1 1 1 x x n x x x n x x x n x x n x x +-+--==+-+--L L L L L L L L L L L L L L L L L L L L L []1(1)(1)n x n x -=+-- (2)按第一列展开: 11100000 (1)(1)0 0n n n n n y x y D x x y x y x y -++=?+-=+-L L L L L L L L

线性代数第二章答案

第二章 矩阵及其运算 1 已知线性变换 ?????++=++=++=3 213321232113235322y y y x y y y x y y y x 求从变量x 1 x 2 x 3到变量y 1 y 2 y 3的线性变换 解 由已知 ? ??? ?????? ? ?=???? ??221321323513122y y y x x x 故 ???? ?????? ? ?=???? ??-3211 221323513122x x x y y y ? ??? ?????? ??----=321423736 947y y y ?????-+=-+=+--=3 21332123 211423736947x x x y x x x y x x x y 2 已知两个线性变换 ?????++=++-=+=321332123 11542322y y y x y y y x y y x ?????+-=+=+-=3 233122 11323z z y z z y z z y 求从z 1 z 2 z 3到x 1 x 2 x 3的线性变换 解 由已知 ???? ?????? ? ?-=???? ??221321514232102y y y x x x ??? ? ?????? ??--???? ??-=32131 010 2013514232102z z z ??? ? ?????? ??----=321161109412316z z z

所以有?????+--=+-=++-=3 21332123 2111610941236z z z x z z z x z z z x 3 设???? ??--=111111111A ??? ? ??--=150421321B 求3AB 2A 及A T B 解 ??? ? ??---???? ??--???? ??--=-1111111112150421321111111111323A AB ???? ??----=???? ??---???? ??-=2294201722213211111111120926508503 ??? ? ??-=???? ??--???? ??--=092650850150421321111111111B A T 4 计算下列乘积 (1)??? ? ?????? ??-127075321134 解 ???? ?????? ??-127075321134???? ???+?+??+?-+??+?+?=102775132)2(71112374??? ? ??=49635 (2)???? ??123)321( 解 ??? ? ??123)321((132231)(10)

第二章线性表答案

第2章线性表 一选择题 1.下述哪一条是顺序存储结构的优点?( A ) A.存储密度大 B.插入运算方便 C.删除运算方 便 D.可方便地用于各种逻辑结构的存储表示 2.下面关于线性表的叙述中,错误的是哪一个?( B )A.线性表采用顺序存储,必须占用一片连续的存储单元。B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。D.线性表采用链接存储,便于插入和删除操作。 3.线性表是具有n个( C )的有限序列(n>0)。 A.表元素 B.字符 C.数据元 素 D.数据项 E.信息项 4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( A )存储方式最节省时间。 AHA12GAGGAGAGGAFFFFAFAF

A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表 5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。 A.单链表 B.仅有头指针的单循环链 表 C.双链表D.仅有尾指针的单循环链表 6.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( D )最节省时间。 A. 单链表 B.单循环链表 C. 带尾指针的单循环链表 D.带头结点的双循环链表 7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用( D )存储方式最节省运算时间。 AHA12GAGGAGAGGAFFFFAFAF

A.单链表 B.双链表 C.单循环链 表 D.带头结点的双循环链表 8. 静态链表中指针表示的是( BC ). A.内存地址 B.数组下标 C.下一元素地址D.左、右孩子地址 9. 链表不具有的特点是( C ) A.插入、删除不需要移动元素 B.可随机访问任一元素C.不必事先估计存储空间 D.所需空间与线性长度成正比 10. 下面的叙述不正确的是( BC ) A.线性表在链式存储时,查找第i个元素的时间同i的值成正比 AHA12GAGGAGAGGAFFFFAFAF

北大版 线性代数第一章部分课后答案详解

习题1.2: 1 .写出四阶行列式中 11121314212223243132333441 42 43 44 a a a a a a a a a a a a a a a a 含有因子1123a a 的项 解:由行列式的定义可知,第三行只能从32a 、34a 中选,第四行只能从42a 、44a 中选,所以所有的组合只有() () 13241τ-11233244a a a a 或() () 13421τ-11233442a a a a ,即含有因子1123a a 的项 为11233244a a a a 和11233442a a a a 2. 用行列式的定义证明111213141521 22232425 31 3241425152 000000000 a a a a a a a a a a a a a a a a =0 证明:第五行只有取51a 、52a 整个因式才能有可能不为0,同理,第四行取41a 、42a ,第三行取31a 、32a ,由于每一列只能取一个,则在第三第四第五行中,必有一行只能取0.以第五行为参考,含有51a 的因式必含有0,同理,含有52a 的因式也必含有0。故所有因式都为0.原命题得证.。 3.求下列行列式的值: (1)01000020;0001000 n n -L L M M M O M L L (2)00100200100000 n n -L L M O M O M L L ; 解:(1)0100 0020 0001 000 n n -L L M M M O M L L =()()23411n τ-L 123n ????L =()1 1!n n --

线性代数第二章矩阵试题及答案

第二章矩阵 一、知识点复习 1、矩阵的定义 由m n个数排列成的一个m行n列的表格,两边界以圆括号或方括号,就成为一个m n型矩阵。例如 2 -1 0 1 1 1 1 1 0 2 2 5 4 -2 9 3 3 3 -1 8 是一个45矩阵. 一个矩阵中的数称为它的元素,位于第i行第j列的数称为(i,j)位元素。 元素全为0的矩阵称为零矩阵,通常就记作0。 两个矩阵A和B相等(记作A=B),是指它的行数相等,列数也相等(即它们的类型相同),并且对应的元素都相等。 2、 n阶矩阵与几个特殊矩阵 行数和列数相等的矩阵称为方阵,行列数都为n的矩阵也常常叫做n阶矩阵。 n阶矩阵的从左上角到右下角的对角线称为主对角线。 下面列出几类常用的n阶矩阵,它们都是考试大纲中要求掌握的. 对角矩阵: 对角线外的的元素都为0的n阶矩阵. 单位矩阵: 对角线上的的元素都为1的对角矩阵,记作E(或I). 数量矩阵: 对角线上的的元素都等于一个常数c的对角矩阵,它就是c E. 上三角矩阵: 对角线下的的元素都为0的n阶矩阵. 下三角矩阵: 对角线上的的元素都为0的n阶矩阵. 对称矩阵: 满足A T=A矩阵,也就是对任何i,j,(i,j)位的元素和(j,i)位的元素总是相等的n阶矩阵. 反对称矩阵:满足A T=-A矩阵.也就是对任何i,j,(i,j)位的元素和(j ,i)位的元素之和总等于0的n阶矩阵.反对称矩阵对角线上的元素一定都是0.) 正交矩阵:若AA T=A T A=E,则称矩阵A是正交矩阵。 (1)A是正交矩阵?A T=A-1 (2)A是正交矩阵?2 A=1 阶梯形矩阵:一个矩阵称为阶梯形矩阵,如果满足: ①如果它有零行,则都出现在下面。 ②如果它有非零行,则每个非零行的第一个非0元素所在的列号自上而下严 格单调递增。 把阶梯形矩阵的每个非零行的第一个非0元素所在的位置称为台角。 每个矩阵都可以用初等行变换化为阶梯形矩阵,这种运算是在线性代数的各类 计算题中频繁运用的基本运算,必须十分熟练。 请注意:一个矩阵用初等行变换化得的阶梯形矩阵并不是唯一的,但是其非零 行数和台角位置是确定的。 3、矩阵的线形运算 (1)加(减)法:两个m n的矩阵A和B可以相加(减),得到的和(差)仍是m n 矩阵,记作A+B (A-B),运算法则为对应元素相加(减). (2)数乘: 一个m n的矩阵A与一个数c可以相乘,乘积仍为m n的矩阵, 记作c A,运算法则为A的每个元素乘c. 这两种运算统称为线性运算,它们满足以下规律: ①加法交换律:A+B=B+A. 2加法结合律:(A+B)+C=A+(B+C). ③加乘分配律:c(A+B)=c A+c B.(c+d)A=c A+d A. ④数乘结合律: c(d)A=(cd)A. ⑤ c A=0 c=0 或A=0. 4、矩阵乘法的定义和性质 (1)当矩阵A的列数和B的行数相等时,则A和B可以相乘,乘积记作AB. AB的行数和A相等,列数和B相等. AB的(i,j)位元素等于A的第i个行向量 和B的第j个列向量(维数相同)对应分量乘积之和.

第2章线性表习题解答

第2章线性表习题解答

第2章习题 (2) 第2章习题 2.1若将顺序表中记录其长度的分量listlen改为指向最后一个元素的位置last,在实现各基本运算时需要做那些修改? 【解】 //用线性表最后一个元素的下标last代替listLen实现顺序表 #define MAXLEN 100 typedef int elementType; typedef struct sllLast { elementType data[MAXLEN]; int last; }seqList; //初始化 void initialList(seqList &S)

{ https://www.360docs.net/doc/ed11686108.html,st=-1; } //求表长度 int listLength(seqList S) { return https://www.360docs.net/doc/ed11686108.html,st+1; } //按序号取元素 bool getElement(seqList S,int i,elementType &x) { if(i<1 || i>https://www.360docs.net/doc/ed11686108.html,st+1) //i为元素编号,有效范围在https://www.360docs.net/doc/ed11686108.html,st+1之间 return false; else { x=S.data[i-1];

return true; } } //查找元素x,成功:返回元素编号;失败:返回0 int listLocate(seqList S,elementType x) { int i; for(i=0;i<=https://www.360docs.net/doc/ed11686108.html,st;i++) { if(S.data[i]==x) return i+1; //找到,转换为元素编号输出 } return 0; } //插入元素 int listInsert(seqList &S,elementType x, int i)

线性代数课后习题答案(陈维新)

第一章 行列式 习题1.1 1. 证明:(1)首先证明)3(Q 是数域。 因为)3(Q Q ?,所以)3(Q 中至少含有两个复数。 任给两个复数)3(3,32211Q b a b a ∈++,我们有 3 )()3()3)(3(3)()()3()3(3)()()3()3(2121212122112121221121212211b a a b b b a a b a b a b b a a b a b a b b a a b a b a +++=++-+-=+-++++=+++。 因为Q 是数域,所以有理数的和、差、积仍然为有理数,所以 ) 3(3)()3()3)(3()3(3)()()3()3()3(3)()()3()3(2121212122112121221121212211Q b a a b b b a a b a b a Q b b a a b a b a Q b b a a b a b a ∈+++=++∈-+-=+-+∈+++=+++。 如果0322≠+b a ,则必有22,b a 不同时为零,从而0322≠-b a 。 又因为有理数的和、差、积、商仍为有理数,所以 )3(33) (3)3() 3)(3()3)(3(3 32 2 22212122222121222222112211Q b a b a a b b a b b a a b a b a b a b a b a b a ∈--+--= -+-+= ++。 综上所述,我们有)3(Q 是数域。 (2)类似可证明)(p Q 是数域,这儿p 是一个素数。 (3)下面证明:若q p ,为互异素数,则)()(q Q p Q ?。 (反证法)如果)()(q Q p Q ?,则q b a p Q b a +=? ∈?,,从而有 q ab qb a p p 2)()(222++==。 由于上式左端是有理数,而q 是无理数,所以必有02=q ab 。 所以有0=a 或0=b 。 如果0=a ,则2 qb p =,这与q p ,是互异素数矛盾。 如果0=b ,则有 a p =,从而有“有理数=无理数”成立,此为矛盾。 所以假设不成立,从而有)()(q Q p Q ?。

(完整版)数据结构第二章线性表1答案

(A )需经常修改L 中的结点值 (E )需不断对L 进行删除插入 第二部分线性表 、选择题 1 ?关于顺序存储的叙述中,哪一条是不正确的 (B ) A. 存储密度大 B. 逻辑上相邻的结点物理上不必邻接 C. 可以通过计算直接确定第 i 个结点的位置 D. 插入、删除操作不方便 2.长度为n 的单链表连接在长度为 m 的单链表后的算法的时间复杂度为 (C ) A 0( n ) B 0(1) C 0(m ) D 0(m+n ) 3 .在n 个结点的顺序表中,算法的时间复杂度是 0(1)的操作是:(A ) A 访问第i 个结点(1<=i<=n )和求第i 个结点的直接前趋(2<=i<=n ) B 在第i 个结点(1<=i<=n )后插入一个新结点 C 删除第i 个结点(1<=i<=n ) D 将n 个结点从小到大排序 4.一个向量第一个兀素的存储地址是 100 ,每个兀素的长度为 2 ,则第5 个兀素的地址是 (B ) ( A ) 110 ( B ) 108 (C ) 100 ( D ) 120 5 .已知一个顺序存储的线性表, 设每个结点需要占 m 个存储单元,若第一个结点的地址为 da , 则第i 个结点的地址为:(A ) 7 .链表是一种采用( B )存储结构存储的线性表。 (A )顺序 (B )链式 (C )星式 (D )网状 8 .线性表若采用链式存储结构时,要求内存中可用存储单兀的地址: (D ) (A )必须是连续的 (B )部分地址必须是连续的 (C )一定是不连续的 (D )连续或不连续都可以 9 .线性表L 在_ ( B )情况下适用于使用链式结构实现。 A ) da+(i-1)*m B ) da+i*m 6.在具有n 个结点的单链表中,实现( A )遍历链表和求链表的第 i 个结点 C )删除开始结点 C ) da-i*m D ) da+(i+1)*m A )的操作,其算法的时间复杂度为 0(n )。 B )在地址为p 的结点之后插入一个结点 D ) 删除地址为p 的结点的后继结点

线性代数课后习题答案全)习题详解

线性代数课后习题答案全)习题详解 第一章 行列式 1.利用对角线法则计算下列三阶行列式: (1)381141102---; (2)b a c a c b c b a ; (3)222111c b a c b a ; (4)y x y x x y x y y x y x +++. 解 (1)=---3 811411 02811)1()1(03)4(2??+-?-?+?-?)1()4(18)1(2310-?-?-?-?-??- =416824-++-=4- (2)=b a c a c b c b a cc c aaa bbb cba bac acb ---++3333c b a abc ---= (3)=2 221 11c b a c b a 222222cb ba ac ab ca bc ---++))()((a c c b b a ---= (4)y x y x x y x y y x y x +++yx y x y x yx y y x x )()()(+++++=333)(x y x y -+-- 33322333)(3x y x x y y x y y x xy ------+= )(233y x +-=

2.按自然数从小到大为标准次序,求下列各排列的逆序数: (1)1 2 3 4; (2)4 1 3 2; (3)3 4 2 1; (4)2 4 1 3; (5)1 3 … )12(-n 2 4 … )2(n ; (6)1 3 … )12(-n )2(n )22(-n … 2. 解(1)逆序数为0 (2)逆序数为4:4 1,4 3,4 2,3 2 (3)逆序数为5:3 2,3 1,4 2,4 1,2 1 (4)逆序数为3:2 1,4 1,4 3 (5)逆序数为 2 ) 1(-n n : 3 2 1个 5 2,5 4 2个 7 2,7 4,7 6 3个 ……………… … )12(-n 2,)12(-n 4,)12(-n 6,…,)12(-n )22(-n )1(-n 个 (6)逆序数为)1(-n n 3 2 1个 5 2,5 4 2个 ……………… … )12(-n 2,)12(-n 4,)12(-n 6,…,)12(-n )22(-n )1(-n 个 4 2 1个 6 2,6 4 2个 ……………… … )2(n 2,)2(n 4,)2(n 6,…,)2(n )22(-n )1(-n 个 3.写出四阶行列式中含有因子2311a a 的项.

第二章线性表习题及答案

第二章线性表习题及答案 一、基础知识题 2.1 试描述头指针、头结点、开始结点的区别、并说明头指针和头结点的作用。 答:始结点是指链表中的第一个结点,也就是没有直接前趋的那个结点。 链表的头指针是一指向链表开始结点的指针(没有头结点时),单链表由头指针唯一确定,因此单链表可以用头指针的名字来命名。 头结点是我们人为地在链表的开始结点之前附加的一个结点。有了头结点之后,头指针指向头结点,不论链表否为空,头指针总是非空。而且头指针的设置使得对链表的第一个位置上的操作与在表其他位置上的操作一致(都是在某一结点之后)。 2.2 何时选用顺序表、何时选用链表作为线性表的存储结构为宜? 答:在实际应用中,应根据具体问题的要求和性质来选择顺序表或链表作为线性表的存储结构,通常有以下几方面的考虑: 1.基于空间的考虑。当要求存储的线性表长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表;反之,当线性表长度变化大,难以估计其存储规模时,采用动态链表作为存储结构为好。 2.基于时间的考虑。若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜;反之,若需要对线性表进行频繁地插入或删除等的操作时,宜采用链表做存储结构。并且,若链表的插入和删除主要发生在表的首尾两端,则采用尾指针表示的单循环链表为宜。 2.3 在顺序表中插入和删除一个结点需平均移动多少个结点?具体的移动次数取决于哪两个因素? 答:在等概率情况下,顺序表中插入一个结点需平均移动n/2个结点。删除一个结点需平均移动(n-1)/2个结点。具体的移动次数取决于顺序表的长度n以及需插入或删除的位置i。i 越接近n则所需移动的结点数越少。 2.4 为什么在单循环链表中设置尾指针比设置头指针更好? 答:尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便,设一带头结点的单循环链表,其尾指针为rear,则开始结点和终端结点的位置分别是rear->next->next 和rear, 查找时间都是O(1)。 若用头指针来表示该链表,则查找终端结点的时间为O(n)。 2.5 在单链表、双链表和单循环链表中,若仅知道指针p指向某结点,不知道头指针,能否将结点*p从相应的链表中删去?若可以,其时间复杂度各为多少? 答:我们分别讨论三种链表的情况。 1. 单链表。当我们知道指针p指向某结点时,能够根据该指针找到其直接后继,但是由于不知道其头指针,所以无法访问到p指针指向的结点的直接前趋。因此无法删去该结点。 2. 双链表。由于这样的链表提供双向链接,因此根据已知结点可以查找到其直接前趋和直接后继,从而可以删除该结点。其时间复杂度为O(1)。 3. 单循环链表。根据已知结点位置,我们可以直接得到其后相邻的结点位置(直接后继),又因为是循环链表,所以我们可以通过查找,得到p结点的直接前趋。因此可以删去p所指结点。其时间复杂度应为O(n)。 2.6 下述算法的功能是什么? LinkList Demo(LinkList L){ // L 是无头结点单链表 ListNode *Q,*P; if(L&&L->next){ Q=L;L=L->next;P=L;

线性代数课后习题答案

线性代数课后题详解 第一章 行列式 1.利用对角线法则计算下列三阶行列式: 相信自己加油 (1) 3811411 02 ---; (2)b a c a c b c b a (3) 2 2 2 111 c b a c b a ; (4) y x y x x y x y y x y x +++. 解 注意看过程解答(1)=---3 81141 1 2811)1()1(03)4(2??+-?-?+?-? )1()4(18)1(2310-?-?-?-?-??- =416824-++- =4- (2) =b a c a c b c b a cc c aaa bbb cba bac acb ---++ 3333c b a abc ---= (3) =2 2 2 1 11c b a c b a 222222cb ba ac ab ca bc ---++ ))()((a c c b b a ---= (4) y x y x x y x y y x y x +++ yx y x y x yx y y x x )()()(+++++=333)(x y x y -+-- 33322333)(3x y x x y y x y y x xy ------+= )(233y x +-= 2.按自然数从小到大为标准次序,求下列各排列的逆序数:耐心成就大业 (1)1 2 3 4; (2)4 1 3 2; (3)3 4 2 1; (4)2 4 1 3; (5)1 3 … )12(-n 2 4 … )2(n ; (6)1 3 … )12(-n )2(n )22(-n … 2. 解(1)逆序数为0

(2)逆序数为4:4 1,4 3,4 2,3 2 (3)逆序数为5:3 2,3 1,4 2,4 1,2 1 (4)逆序数为3:2 1,4 1,4 3 (5)逆序数为2 ) 1(-n n : 3 2 1个 5 2,5 4 2个 7 2,7 4,7 6 3个 ……………… … )12(-n 2,)12(-n 4,)12(-n 6,…,)12(-n )22(-n )1(-n 个 (6)逆序数为)1(-n n 3 2 1个 5 2,5 4 2个 ……………… … )12(-n 2,)12(-n 4,)12(-n 6,…,)12(-n )22(-n )1(-n 个 4 2 1个 6 2,6 4 2个 ……………… … )2(n 2,)2(n 4,)2(n 6,…,)2(n )22(-n )1(-n 个 3.写出四阶行列式中含有因子 2311a a 的项. 解 由定义知,四阶行列式的一般项为 43214321)1(p p p p t a a a a -,其中t 为4321p p p p 的逆序数.由于3,121==p p 已固定, 4321p p p p 只能形如13□□,即1324或1342.对应的t 分别为 10100=+++或22000=+++ ∴44322311a a a a -和42342311a a a a 为所求. 4.计算下列各行列式: 多练习方能成大财 (1)?? ??????? ???711 00251020214214; (2)????? ? ??? ???-26 0523******** 12; (3)???? ??????---ef cf bf de cd bd ae ac ab ; (4)?? ??? ???????---d c b a 100 110011001 解 (1) 7110025102021421434327c c c c --0 1001423102 02110214--- =34)1(14 3102211014+-?---

线性代数第二章答案

第二章 矩阵及其运算 1 已知线性变换 ?????++=++=++=3 21332123 2113235322y y y x y y y x y y y x , 求从变量x 1 x 2 x 3到变量y 1 y 2 y 3的线性变换 解 由已知 ? ??? ?????? ? ?=???? ??22 1321323513122y y y x x x 故 ???? ?????? ? ?=???? ??-3211 221323513122x x x y y y ? ??? ?????? ??----=321423736 947y y y ?????-+=-+=+--=3 21332123 211423736947x x x y x x x y x x x y 2 已知两个线性变换 ?????++=++-=+=3 2133 2123 11542322y y y x y y y x y y x ?????+-=+=+-=3 233122 11323z z y z z y z z y 求从z 1 z 2 z 3到x 1 x 2 x 3的线性变换 解 由已知 ???? ?????? ? ?-=???? ??221321514232102y y y x x x ??? ? ?????? ??--???? ??-=32131 010 2013514232102z z z ??? ? ?????? ??----=32 1161109412316z z z

所以有?????+--=+-=++-=3 2133 2123 2111610941236z z z x z z z x z z z x 3 设???? ??--=111111111A ??? ? ??--=150421321B 求3AB 2A 及A T B 解 ??? ? ??---???? ??--???? ??--=-1111111112150421321111111111323A AB ???? ??----=???? ??---???? ??-=2294201722213211111111120926508503 ??? ? ??-=???? ??--???? ??--=092650850150421321111111111B A T 4 计算下列乘积 (1)??? ? ?????? ??-127075321134 解 ???? ?????? ??-127075321134???? ???+?+??+?-+??+?+?=102775132)2(71112374?? ? ? ??=49635 (2)???? ??123)321( 解 ??? ? ??123)321((132231)(10)

线性代数第二章习题答案

习 题 2-1 1.由6名选手参加乒乓球比赛,成绩如下:选手1胜选手2、4、5、6而负于选手3;选手2胜选手4、5、6而负于选手1、3;选手3胜选手1、2、4而负于选手5、6;选手4胜选手5、6而负于选手1、2、3;选手5胜选手3、6而负于选手1、2、4;选手6胜选手2而负于选手1、3、4、5.若胜一场得1分,负一场得0分,使用矩阵表示输赢状况,并排序. 解: ????? ?? ? ? ? ??000010 100100110000001011 1110001110106543216 54321,选手按胜多负少排序为:6,5,4,3,2,1. 2.设矩阵???? ??-=???? ?? +-=2521 ,03231 z x y x B A ,已知B A =,求z y x ,,. 解:由于B A =得?????=-=+=-0253223z x y x ,解得:?? ? ??===211 z y x 。 习 题 2-2 1.设???? ??=0112A ,??? ? ??-=4021B ,求 (1)B A 52-; (2)BA AB -; (3)2 2B A -. 解:(1)??? ? ??--=???? ??--???? ??=???? ??--???? ??=-202892001050224402150112252B A ; (2)???? ??--=???? ??--???? ??--=???? ?????? ??--???? ??-???? ??=-2592041021820112402140210112BA AB ; (3)??? ? ??--=???? ??-???? ??=???? ??-???? ??--???? ?????? ??=-152441606112254021402101120112B A 22. 2.已知????? ??--=230412301321A ,??? ? ? ??---=052110 35123 4B ,求B A 23-. 解:??? ? ? ??----????? ??--=052110351234223041230 13 21 323B -A ??? ? ? ??----=????? ??----????? ??--=61941016151055011010422061024686901236903963 3.设??? ? ? ??----=????? ??=101012121234,432112 122121B A ,求

第二章_线性表(参考答案)

第二章线性表 一、填空题 1、数据逻辑结构包括线性结构、树型结构、图型结构这三种类型,树形结构和图形结构合称为非线性结构。 2、在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有个前驱结点,最后一个结点没有后续结点,其余每个结点有且只有一个后续结点。 3、在顺序表中插入或删除一个元素,需要平均移动一半元素,具体移动的元素个数与插入或删除的位置有关。 4、在顺序表中,逻辑上相邻的元素,其物理位置一定相邻。在单链表中,逻辑上相邻的元素,其物理位置不一定相邻。 5、在带头结点的非空单链表中,头结点的存储位置由头指针指示,首元素结点的存储位置由头结点的next域指示,除首元素结点外,其它任一元素结点的存储位置由其直接前趋结点的next域指示。 6、阅读下列算法,并补充所缺内容。 void purge_linkst( ListNode *& la ) { // 从头指针为 la 的有序链表中删除所有值相同的多余元素,并释放被删结点空间ListNode *p,*q; if(la==NULL) return; q=la; p = la->link; while (p) { if (p && ___(1)p->data!=q->data___) {q=p; p = p->link;} else { q->link= ___(2)p->link___; delete(p); p=___(3)q->link___; } }//while }// purge_linkst 二、选择题 1、在数据结构中,从逻辑上可以把数据结构分成 C。 A、动态结构和静态结构 B、紧凑结构和非紧凑结构 C、线性结构和非线性结构 D、内部结构和外部结构 2、线性表的逻辑顺序与存储顺序总是一致的,这种说法 B。 A、正确 B、不正确 3、线性表若采用链式存储结构时,要求内存中可用存储单元的地址D。 A、必须是连续的 B、部分地址必须是连续的 C、一定是不连续的 D、连续或不连续都可以 4、在以下的述叙中,正确的是B。 A、线性表的线性存储结构优于链表存储结构 B、二维数组是其数据元素为线性表的线性表 C、栈的操作是先进先出 D、队列的操作方式是先进后出 三、综合题 1、已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。 A、在P结点后插入S结点的语句序列是((4)、(1)); B、在P结点前插入S结点的语句序列是((7)、(11)、(8)、(4)、(1)); C、在表首插入S结点的语句序列是((5)、(12));

线性代数课后习题答案分析

线性代数课后题详解 第一章 行列式 1.利用对角线法则计算下列三阶行列式: 相信自己加油 (1) 3811411 02 ---; (2)b a c a c b c b a (3) 2 2 2 111 c b a c b a ; (4) y x y x x y x y y x y x +++. 解 注意看过程解答(1)=---3 81141 1 2811)1()1(03)4(2??+-?-?+?-? )1()4(18)1(2310-?-?-?-?-??- =416824-++- =4- (2) =b a c a c b c b a cc c aaa bbb cba bac acb ---++ 3333c b a abc ---= (3) =2 2 2 1 11c b a c b a 222222cb ba ac ab ca bc ---++ ))()((a c c b b a ---= (4) y x y x x y x y y x y x +++ yx y x y x yx y y x x )()()(+++++=333)(x y x y -+-- 33322333)(3x y x x y y x y y x xy ------+= )(233y x +-= 2.按自然数从小到大为标准次序,求下列各排列的逆序数:耐心成就大业 (1)1 2 3 4; (2)4 1 3 2; (3)3 4 2 1; (4)2 4 1 3; (5)1 3 … )12(-n 2 4 … )2(n ; (6)1 3 … )12(-n )2(n )22(-n … 2. 解(1)逆序数为0

线性系统理论多年考题和答案

2008级综合大题 []400102110010112x x u y x ????????=-+????????-????=& 1 能否通过状态反馈设计将系统特征值配置到平面任意位置? 2 控规范分解求上述方程的不可简约形式? 3 求方程的传递函数; 4 验证系统是否渐近稳定、BIBO 稳定、李氏稳定;(各种稳定之间的关系和判定方法!) 5 可能通过状态反馈将不可简约方程特征值配置到-2,-3?若能,确定K ,若不能,请说明理由; 6 能否为系统不可简约方程设计全阶状态观测器,使其特征值为-4,-5; 7画出不可简约方程带有状态观测器的状态反馈系统结构图。 参考解答: 1. 判断能控性:能控矩阵21416124,() 2.000M B AB A B rank M ?? ????==-=???? ???? 系统不完全 可控,不能任意配置极点。 2 按可控规范型分解 取M 的前两列,并加1与其线性无关列构成1140120001P -????=-??????,求得1203311066 001P ?? ?? ?? ??=-?????? ???? 进行变换[]11 20831112,0,22260001A PAP B PB c cP --? ??????? ????=-====???? ???????? ????

所以系统不可简约实现为[]08112022x x u y x ?????=+?????????? ?=? & 3. 12(1)(1)2(1) ()()(4)(2)(1)(4)(2) s s s G s c sI A B s s s s s --+-=-= =-++-+ 4. det()(4)(2)(1)sI A s s s -=-++,系统有一极点4,位于复平面的右部,故不是渐近稳定。 12(1) ()()(4)(2) s G s c sI A B s s --=-= -+,极点为4,-2,存在位于右半平面的极点,故系统不 是BIBO 稳定。 系统发散,不是李氏稳定。 5. 可以。令11228,12T k k k k A Bk k +???? =+=???????? 则特征方程[]2 112()det ()(2)28f s sI A Bk s k s k k =-+=-++-- 期望特征方程*2 ()(2)(3)56f s s s s s =++=++ 比较上两式求得:728T k -?? =??-?? 6. 可以。设12l L l ??=????,则11222821222l l A LC l l --?? -=? ?--?? 特征方程2 2121()(222)1628f s s l l s l l =+-++-- 期望特征方程*2 ()(4)(5)920f s s s s s =++=++ 比较得:103136L ???? =????????

第2章线性表习题参考答案

一、选择题 1. D 2. B 3. B 4. B 5. B 6. B 7. D 8. B 9. C 10. B 11. C 12. C 13. B 14. D 15. A 16. B 17. B 18. C 19. A 20. C 21. D 22. A 23. A 24. A 二、填空题 1. 首元素其直接前驱结点的链域的值 2. HL→next =NULL; HL=HL→next 3. 有限、一对一 4. O(1) 随机存取 5. 表中一半表长和该元素在表中的位置 6. 必定不一定 7. O(1) O(n) 8. 前驱结点的地址 O(n) 9. n-i+1 n-i 10. s->left=p p->right 三、判断题 1. × 2. × 3. × 4. × 5. × 6. × 7. √ 8. × 9. × 10. × 11. × 四、简答题 1. 线性表为:(78,50,40,60,34,90) 2. (36, 12, 8, 50, 25, 5, 15) 3. 解答: 尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便,设一带头结点的单循环链表,其尾指针为rear,则开始结点和终端结点的位置分别是rear->next->next和rear, 查找时间都是O(1)。

若用头指针来表示该链表,则查找终端结点的时间为O(n)。 五、编程题 1. 解答:由于在单链表中只给出一个头指针,所以只能用遍历的方法来数单链表中的结点个数了。算法如下: int ListLength ( LinkList L ) { int len=0 ; ListNode *p; p=L; //设该表有头结点 while ( p->next ) { p=p->next; len++; } return len; } 2. int searchmin(linklist l) { int min; int *p; p=l; min=p->data; p=p->next; while (p->next< >nil) { if (min>p->data) min=p->data; p=p->next; } return min; } 3. int searchmax(linklist l) { int max; int *p; p=l; max=p->data; p=p->next; while (p->next< >nil) { if (maxdata) max=p->data; p=p->next; } return max; } 4. 顺序表:要将该表逆置,可以将表中的开始结点与终端结点互换,第二个结点与倒数第二个结点互换,如此反复,就可将整个表逆置了。 算法如下: // 顺序表结构定义同上题 void ReverseList( Seqlist *L) { DataType temp ; //设置临时空间用于存放data int i; for (i=0;i<=L->length/2;i++)//L->length/2为整除运算 { temp = L->data[i]; //交换数据 L -> data[ i ] = L -> data[ L -> length-1-i]; L -> data[ L -> length - 1 - i ] = temp; }

线性表 答案

数据结构与算法上机作业第二章线性表

一、选择题 1、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新的元素算法的时间复杂度为 C 。 A. O(log2n) B. O(1) C. O(n) D. O(n2) 2、以下关于线性表的说法中,不正确的是 C 。 A. 线性表中的数据元素可以是数字、字符、结构等不同类型 B. 线性表中包含的数据元素个数不是任意的 C. 线性表中的每一个结点都有且只有一个直接前驱和直接后继 D. 存在这样的线性表:表中各结点都没有直接前驱和直接后继 3、在有n个结点的顺序表上做插入、删除结点运算的时间复杂度为 B 。 A. O(1) B. O(n) C. O(n2) D. O(log2n) 4、等概率情况下,在有n个结点的顺序表上做插入结点操作,需平均移动的结点数目为 C 。提示:插入的位置有n+1个,移动总数为:1+2+3+……+n A. n B. (n-1)/2 C. n/2 D. (n+1)/2 5、在一个长度为n的顺序存储的线性表中查找值为x的元素时,平均查找长度(及x同元素的平均比较次数,假定查找每个元素的概率都相等)为 C 。 A. n B. n/2 C. (n+1)/2 D. (n-1)/2 6、在顺序表中,只要知道 D ,就可以求出任一结点的存储地址。 A. 基地址 B. 结点大小 C. 向量大小 D. 基地址和结点大小 7、将两个各有n个元素的有序表归并为一个有序表,其最少的比较次数是 A 。 A. n B. 2n-1 C. 2n D. n-1 8、线性表采用链表存储时其存储地址要求 D 。 A. 必须是连续的 B. 部分地址必须是连续的 C. 必须是不连续的 D. 连续的和不连续的都可以 9、下面关于线性表的描述中,错误的是 B 。 A. 线性表采用顺序存储,必须占用一片连续的存储单元 B. 线性表采用顺序存储,便于进行插入和删除操作 C. 线性表采用链式存储,不必占用一片连续的存储单元 D. 线性表采用链式存储,便于插入和删除操作 10、向具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是 B A. O(1) B. O(n) C. O(n2) D. O(log2n) 11、在一个带头结点的单链表HL中,若要向表头插入一个由指针p指向的结点,则执行的语句是 D 。 A. HL=p; p->next=HL; B. p->next=HL; HL=p; C. p->next=HL; p=HL; D. p->next=HL->next; HL->next=p; 12、在一个单链表HL中,若要删除由指针q所指向结点的后继结点,则执行的语句是C 。 A. p=q->next; p->next=q->next; B. p=q->next; q->next=p; C. p=q->next; q->next=p->next; D. q->next=q->next->next; q->next=q; 13、设有编号为1, 2, 3, 4的4辆列车,顺序进入一个栈结构的站台,下列不可能的出栈顺序为 D 。 A. 1234 B. 1243 C. 1324 D. 1423

相关文档
最新文档