完整数据结构练习题含答案DOC推荐文档.docx
《完整数据结构练习题含答案DOC推荐文档.docx》由会员分享,可在线阅读,更多相关《完整数据结构练习题含答案DOC推荐文档.docx(32页珍藏版)》请在冰豆网上搜索。
完整数据结构练习题含答案DOC推荐文档
数据结构练习题
习题1绪论
1.1单项选择题
1.数据结构是一门研究非数值计算的程序设计问题中,数据元素的①、数据信息在计算机中的②以及一组相关的运算等的课程。
①A.操作对象 B.计算方法 C.逻辑结构 D.数据映象
②A.存储结构B.关系C.运算D.算法
2.数据结构DS(DataStruct)可以被形式地定义为DS=(D,R),其中D是①的有限集合,R是D上的②有限集合。
①A.算法B.数据元素C.数据操作D.数据对象
②A.操作B.映象C.存储D.关系
3.在数据结构中,从逻辑上可以把数据结构分成。
A.动态结构和静态结构B.紧凑结构和非紧凑结构
C.线性结构和非线性结构D.内部结构和外部结构
4.算法分析的目的是①,算法分析的两个主要方面是②。
①A.找出数据结构的合理性B.研究算法中的输入和输出的关系
C.分析算法的效率以求改进D.分析算法的易懂性和文档性
②A.空间复杂性和时间复杂性B.正确性和简明性
C.可读性和文档性D.数据复杂性和程序复杂性
5.计算机算法指的是①,它必具备输入、输出和②等五个特性。
①A.计算方法B.排序方法
C.解决问题的有限运算序列D.调度方法
②A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性
C.确定性、有穷性和稳定性D.易读性、稳定性和安全性
1.2填空题(将正确的答案填在相应的空中)
1.数据逻辑结构包括、和三种类型,树形结构和图形结构合称为。
2.在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。
3.在树形结构中,树根结点没有结点,其余每个结点有且只有个直接前驱结点,叶子结点没有结点,其余每个结点的直接后续结点可以。
4.在图形结构中,每个结点的前驱结点数和后续结点数可以。
5.线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。
6.算法的五个重要特性是____,____,____,____,____。
7.分析下面算法(程序段),给出最大语句频度,该算法的时间复杂度是____。
for(i=0;ifor(j=0;jA[i][j]=0;8.分析下面算法(程序段),给出最大语句频度,该算法的时间复杂度是____。for(i=0;ifor(j=0;jA[i][j]=0;9.分析下面算法(程序段),给出最大语句频度,该算法的时间复杂度是____。s=0;for(i=0;ifor(j=0;jfor(k=0;ks=s+B[i][j][k];sum=s;10.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。i=s=0;while(s{i++;s+=i;//s=s+i}11.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。i=1;while(i<=n)i=i*2;1.3算法设计题1.试写一算法,自大到小依次输出顺序读入的三个数X,Y和Z的值.2.试写一算法,求出n个数据中的最大值。写出最大语句频度,该算法的时间复杂度。习题答案1.11.C,A2.B,D3.C4.C,A5.C,B1.21.线性结构、树形结构、图形结构,非线性结构2.没有、1、没有、13.前驱、1、后续、任意多个4.任意多个5.一对一、一对多、多对多6.有穷性、确定性、可行性、输入、输出7.最大语句频度:n2,时间复杂度:.O(n2)8.最大语句频度:n(n+1)/2,时间复杂度:.O(n2)9.最大语句频度:n3,时间复杂度:.O(n3)10.最大语句频度:n,时间复杂度:.O(n)11.最大语句频度:log2n,时间复杂度:.O(log2n) 习题2线性表2.1单项选择题1.一个向量(即一批地址连续的存储单元)第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是____。A.110B.108C.100D.1202.线性表的顺序存储结构是一种___的存储结构,而链式存储结构是一种___的存储结构。A.随机存取B.索引存取C.顺序存取D.散列存取3.线性表的逻辑顺序与存储顺序总是一致的,这种说法___。A.正确B.不正确4.线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续或不连续都可以5.在以下的叙述中,正确的是___。A.线性表的顺序存储结构优于链表存储结构B.线性表的顺序存储结构适用于频繁插入/删除数据元素的情况C.线性表的链表存储结构适用于频繁插入/删除数据元素的情况D.线性表的链表存储结构优于顺序存储结构6.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法___。A.正确B.不正确7.不带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL8.带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL9.非空的循环单链表head的尾结点(由p所指向)满足____。A.p->next==NULLB.p==NULLC.p->next==headD.p==head10.在双向循环链表的p所指结点之后插入s所指结点的操作是____。A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;B.p->right=s;p->right->left=s;s->left=p;s->right=p->right;C.s->left=p;s->right=p->right;p->right=s;p->right->left=s;D.s->left=p;s->right=p->right;p->right->left=s;p->right=s;11.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p;B.q->next=s;s->next=p;C.p->next=s;s->next=q;12.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。A.s->next=p;p->next=s;B.s->next=p->next;p->next=s;C.s->next=p->next;p=s;C.p->next=s;s->next=p;13.在一个单链表中,若删除p所指结点的后续结点,则执行____。A.p->next=p->next->next;B.p=p->next;p->next=p->next->next;C.p->next=p->next;D.p=p->next->next;14.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较____个结点。A.nB.n/2C.(n-1)/2D.(n+1)/215.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是____。A.O(1)B.O(n)C.O(n2)D.O(nlog2n)16.给定有n个元素的向量,建立一个有序单链表的时间复杂度是____。A.O(1))B.O(n)C.O(n2)D.O(n*log2n)2.2填空题(将正确的答案填在相应的空中)1.单链表可以做____的链接存储表示。2.在双链表中,每个结点有两个指针域,一个指向______,另一个指向_____。3.在一个单链表中p所指结点之前插入一个s(值为e)所指结点时,可执行如下操作:q=head;while(q->next!=p)q=q->next;s=newNode;s->data=e;q->next=;//填空s->next=;//填空4.在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q=p->next;p->next=____;//填空delete;//填空5.在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=____和p->next=____的操作。6.对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是____;在给定值为x的结点后插入一个新结点的时间复杂度是____。2.3算法设计题:1.设顺序表va中的数据元数递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。StatusInsert_SqList(SqList&va,intx){if(va.length+1>maxsize)returnERROR;va.length++;for(i=va.length-1;va.elem[i]>x&&i>=0;i--)va.elem[i+1]=va.elem[i];va.elem[i+1]=x;returnOK;}2.试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,….an)逆置为(an,an-1,….,a1)。voidreverse(inta[],intsize){inti,j,tmp;for(i=0,j=size-1;i{tmp=a[i];a[i]=a[j];a[j]=tmp;}}3.已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。voiddel(LinkListL,elemtypea,elemtypeb){p=L;q=p->next;while(q!=L&&q->data{p=q;q=q->next;}while(q!=L&&q->data{r=q;q=q->next;free(r);}if(p!=q)p->next
for(j=0;jA[i][j]=0;8.分析下面算法(程序段),给出最大语句频度,该算法的时间复杂度是____。for(i=0;ifor(j=0;jA[i][j]=0;9.分析下面算法(程序段),给出最大语句频度,该算法的时间复杂度是____。s=0;for(i=0;ifor(j=0;jfor(k=0;ks=s+B[i][j][k];sum=s;10.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。i=s=0;while(s{i++;s+=i;//s=s+i}11.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。i=1;while(i<=n)i=i*2;1.3算法设计题1.试写一算法,自大到小依次输出顺序读入的三个数X,Y和Z的值.2.试写一算法,求出n个数据中的最大值。写出最大语句频度,该算法的时间复杂度。习题答案1.11.C,A2.B,D3.C4.C,A5.C,B1.21.线性结构、树形结构、图形结构,非线性结构2.没有、1、没有、13.前驱、1、后续、任意多个4.任意多个5.一对一、一对多、多对多6.有穷性、确定性、可行性、输入、输出7.最大语句频度:n2,时间复杂度:.O(n2)8.最大语句频度:n(n+1)/2,时间复杂度:.O(n2)9.最大语句频度:n3,时间复杂度:.O(n3)10.最大语句频度:n,时间复杂度:.O(n)11.最大语句频度:log2n,时间复杂度:.O(log2n) 习题2线性表2.1单项选择题1.一个向量(即一批地址连续的存储单元)第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是____。A.110B.108C.100D.1202.线性表的顺序存储结构是一种___的存储结构,而链式存储结构是一种___的存储结构。A.随机存取B.索引存取C.顺序存取D.散列存取3.线性表的逻辑顺序与存储顺序总是一致的,这种说法___。A.正确B.不正确4.线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续或不连续都可以5.在以下的叙述中,正确的是___。A.线性表的顺序存储结构优于链表存储结构B.线性表的顺序存储结构适用于频繁插入/删除数据元素的情况C.线性表的链表存储结构适用于频繁插入/删除数据元素的情况D.线性表的链表存储结构优于顺序存储结构6.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法___。A.正确B.不正确7.不带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL8.带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL9.非空的循环单链表head的尾结点(由p所指向)满足____。A.p->next==NULLB.p==NULLC.p->next==headD.p==head10.在双向循环链表的p所指结点之后插入s所指结点的操作是____。A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;B.p->right=s;p->right->left=s;s->left=p;s->right=p->right;C.s->left=p;s->right=p->right;p->right=s;p->right->left=s;D.s->left=p;s->right=p->right;p->right->left=s;p->right=s;11.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p;B.q->next=s;s->next=p;C.p->next=s;s->next=q;12.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。A.s->next=p;p->next=s;B.s->next=p->next;p->next=s;C.s->next=p->next;p=s;C.p->next=s;s->next=p;13.在一个单链表中,若删除p所指结点的后续结点,则执行____。A.p->next=p->next->next;B.p=p->next;p->next=p->next->next;C.p->next=p->next;D.p=p->next->next;14.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较____个结点。A.nB.n/2C.(n-1)/2D.(n+1)/215.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是____。A.O(1)B.O(n)C.O(n2)D.O(nlog2n)16.给定有n个元素的向量,建立一个有序单链表的时间复杂度是____。A.O(1))B.O(n)C.O(n2)D.O(n*log2n)2.2填空题(将正确的答案填在相应的空中)1.单链表可以做____的链接存储表示。2.在双链表中,每个结点有两个指针域,一个指向______,另一个指向_____。3.在一个单链表中p所指结点之前插入一个s(值为e)所指结点时,可执行如下操作:q=head;while(q->next!=p)q=q->next;s=newNode;s->data=e;q->next=;//填空s->next=;//填空4.在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q=p->next;p->next=____;//填空delete;//填空5.在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=____和p->next=____的操作。6.对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是____;在给定值为x的结点后插入一个新结点的时间复杂度是____。2.3算法设计题:1.设顺序表va中的数据元数递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。StatusInsert_SqList(SqList&va,intx){if(va.length+1>maxsize)returnERROR;va.length++;for(i=va.length-1;va.elem[i]>x&&i>=0;i--)va.elem[i+1]=va.elem[i];va.elem[i+1]=x;returnOK;}2.试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,….an)逆置为(an,an-1,….,a1)。voidreverse(inta[],intsize){inti,j,tmp;for(i=0,j=size-1;i{tmp=a[i];a[i]=a[j];a[j]=tmp;}}3.已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。voiddel(LinkListL,elemtypea,elemtypeb){p=L;q=p->next;while(q!=L&&q->data{p=q;q=q->next;}while(q!=L&&q->data{r=q;q=q->next;free(r);}if(p!=q)p->next
A[i][j]=0;
8.分析下面算法(程序段),给出最大语句频度,该算法的时间复杂度是____。
for(i=0;ifor(j=0;jA[i][j]=0;9.分析下面算法(程序段),给出最大语句频度,该算法的时间复杂度是____。s=0;for(i=0;ifor(j=0;jfor(k=0;ks=s+B[i][j][k];sum=s;10.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。i=s=0;while(s{i++;s+=i;//s=s+i}11.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。i=1;while(i<=n)i=i*2;1.3算法设计题1.试写一算法,自大到小依次输出顺序读入的三个数X,Y和Z的值.2.试写一算法,求出n个数据中的最大值。写出最大语句频度,该算法的时间复杂度。习题答案1.11.C,A2.B,D3.C4.C,A5.C,B1.21.线性结构、树形结构、图形结构,非线性结构2.没有、1、没有、13.前驱、1、后续、任意多个4.任意多个5.一对一、一对多、多对多6.有穷性、确定性、可行性、输入、输出7.最大语句频度:n2,时间复杂度:.O(n2)8.最大语句频度:n(n+1)/2,时间复杂度:.O(n2)9.最大语句频度:n3,时间复杂度:.O(n3)10.最大语句频度:n,时间复杂度:.O(n)11.最大语句频度:log2n,时间复杂度:.O(log2n) 习题2线性表2.1单项选择题1.一个向量(即一批地址连续的存储单元)第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是____。A.110B.108C.100D.1202.线性表的顺序存储结构是一种___的存储结构,而链式存储结构是一种___的存储结构。A.随机存取B.索引存取C.顺序存取D.散列存取3.线性表的逻辑顺序与存储顺序总是一致的,这种说法___。A.正确B.不正确4.线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续或不连续都可以5.在以下的叙述中,正确的是___。A.线性表的顺序存储结构优于链表存储结构B.线性表的顺序存储结构适用于频繁插入/删除数据元素的情况C.线性表的链表存储结构适用于频繁插入/删除数据元素的情况D.线性表的链表存储结构优于顺序存储结构6.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法___。A.正确B.不正确7.不带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL8.带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL9.非空的循环单链表head的尾结点(由p所指向)满足____。A.p->next==NULLB.p==NULLC.p->next==headD.p==head10.在双向循环链表的p所指结点之后插入s所指结点的操作是____。A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;B.p->right=s;p->right->left=s;s->left=p;s->right=p->right;C.s->left=p;s->right=p->right;p->right=s;p->right->left=s;D.s->left=p;s->right=p->right;p->right->left=s;p->right=s;11.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p;B.q->next=s;s->next=p;C.p->next=s;s->next=q;12.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。A.s->next=p;p->next=s;B.s->next=p->next;p->next=s;C.s->next=p->next;p=s;C.p->next=s;s->next=p;13.在一个单链表中,若删除p所指结点的后续结点,则执行____。A.p->next=p->next->next;B.p=p->next;p->next=p->next->next;C.p->next=p->next;D.p=p->next->next;14.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较____个结点。A.nB.n/2C.(n-1)/2D.(n+1)/215.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是____。A.O(1)B.O(n)C.O(n2)D.O(nlog2n)16.给定有n个元素的向量,建立一个有序单链表的时间复杂度是____。A.O(1))B.O(n)C.O(n2)D.O(n*log2n)2.2填空题(将正确的答案填在相应的空中)1.单链表可以做____的链接存储表示。2.在双链表中,每个结点有两个指针域,一个指向______,另一个指向_____。3.在一个单链表中p所指结点之前插入一个s(值为e)所指结点时,可执行如下操作:q=head;while(q->next!=p)q=q->next;s=newNode;s->data=e;q->next=;//填空s->next=;//填空4.在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q=p->next;p->next=____;//填空delete;//填空5.在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=____和p->next=____的操作。6.对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是____;在给定值为x的结点后插入一个新结点的时间复杂度是____。2.3算法设计题:1.设顺序表va中的数据元数递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。StatusInsert_SqList(SqList&va,intx){if(va.length+1>maxsize)returnERROR;va.length++;for(i=va.length-1;va.elem[i]>x&&i>=0;i--)va.elem[i+1]=va.elem[i];va.elem[i+1]=x;returnOK;}2.试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,….an)逆置为(an,an-1,….,a1)。voidreverse(inta[],intsize){inti,j,tmp;for(i=0,j=size-1;i{tmp=a[i];a[i]=a[j];a[j]=tmp;}}3.已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。voiddel(LinkListL,elemtypea,elemtypeb){p=L;q=p->next;while(q!=L&&q->data{p=q;q=q->next;}while(q!=L&&q->data{r=q;q=q->next;free(r);}if(p!=q)p->next
for(j=0;j
9.分析下面算法(程序段),给出最大语句频度,该算法的时间复杂度是____。
s=0;
for(i=0;ifor(j=0;jfor(k=0;ks=s+B[i][j][k];sum=s;10.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。i=s=0;while(s{i++;s+=i;//s=s+i}11.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。i=1;while(i<=n)i=i*2;1.3算法设计题1.试写一算法,自大到小依次输出顺序读入的三个数X,Y和Z的值.2.试写一算法,求出n个数据中的最大值。写出最大语句频度,该算法的时间复杂度。习题答案1.11.C,A2.B,D3.C4.C,A5.C,B1.21.线性结构、树形结构、图形结构,非线性结构2.没有、1、没有、13.前驱、1、后续、任意多个4.任意多个5.一对一、一对多、多对多6.有穷性、确定性、可行性、输入、输出7.最大语句频度:n2,时间复杂度:.O(n2)8.最大语句频度:n(n+1)/2,时间复杂度:.O(n2)9.最大语句频度:n3,时间复杂度:.O(n3)10.最大语句频度:n,时间复杂度:.O(n)11.最大语句频度:log2n,时间复杂度:.O(log2n) 习题2线性表2.1单项选择题1.一个向量(即一批地址连续的存储单元)第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是____。A.110B.108C.100D.1202.线性表的顺序存储结构是一种___的存储结构,而链式存储结构是一种___的存储结构。A.随机存取B.索引存取C.顺序存取D.散列存取3.线性表的逻辑顺序与存储顺序总是一致的,这种说法___。A.正确B.不正确4.线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续或不连续都可以5.在以下的叙述中,正确的是___。A.线性表的顺序存储结构优于链表存储结构B.线性表的顺序存储结构适用于频繁插入/删除数据元素的情况C.线性表的链表存储结构适用于频繁插入/删除数据元素的情况D.线性表的链表存储结构优于顺序存储结构6.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法___。A.正确B.不正确7.不带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL8.带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL9.非空的循环单链表head的尾结点(由p所指向)满足____。A.p->next==NULLB.p==NULLC.p->next==headD.p==head10.在双向循环链表的p所指结点之后插入s所指结点的操作是____。A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;B.p->right=s;p->right->left=s;s->left=p;s->right=p->right;C.s->left=p;s->right=p->right;p->right=s;p->right->left=s;D.s->left=p;s->right=p->right;p->right->left=s;p->right=s;11.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p;B.q->next=s;s->next=p;C.p->next=s;s->next=q;12.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。A.s->next=p;p->next=s;B.s->next=p->next;p->next=s;C.s->next=p->next;p=s;C.p->next=s;s->next=p;13.在一个单链表中,若删除p所指结点的后续结点,则执行____。A.p->next=p->next->next;B.p=p->next;p->next=p->next->next;C.p->next=p->next;D.p=p->next->next;14.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较____个结点。A.nB.n/2C.(n-1)/2D.(n+1)/215.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是____。A.O(1)B.O(n)C.O(n2)D.O(nlog2n)16.给定有n个元素的向量,建立一个有序单链表的时间复杂度是____。A.O(1))B.O(n)C.O(n2)D.O(n*log2n)2.2填空题(将正确的答案填在相应的空中)1.单链表可以做____的链接存储表示。2.在双链表中,每个结点有两个指针域,一个指向______,另一个指向_____。3.在一个单链表中p所指结点之前插入一个s(值为e)所指结点时,可执行如下操作:q=head;while(q->next!=p)q=q->next;s=newNode;s->data=e;q->next=;//填空s->next=;//填空4.在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q=p->next;p->next=____;//填空delete;//填空5.在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=____和p->next=____的操作。6.对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是____;在给定值为x的结点后插入一个新结点的时间复杂度是____。2.3算法设计题:1.设顺序表va中的数据元数递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。StatusInsert_SqList(SqList&va,intx){if(va.length+1>maxsize)returnERROR;va.length++;for(i=va.length-1;va.elem[i]>x&&i>=0;i--)va.elem[i+1]=va.elem[i];va.elem[i+1]=x;returnOK;}2.试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,….an)逆置为(an,an-1,….,a1)。voidreverse(inta[],intsize){inti,j,tmp;for(i=0,j=size-1;i{tmp=a[i];a[i]=a[j];a[j]=tmp;}}3.已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。voiddel(LinkListL,elemtypea,elemtypeb){p=L;q=p->next;while(q!=L&&q->data{p=q;q=q->next;}while(q!=L&&q->data{r=q;q=q->next;free(r);}if(p!=q)p->next
for(j=0;jfor(k=0;ks=s+B[i][j][k];sum=s;10.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。i=s=0;while(s{i++;s+=i;//s=s+i}11.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。i=1;while(i<=n)i=i*2;1.3算法设计题1.试写一算法,自大到小依次输出顺序读入的三个数X,Y和Z的值.2.试写一算法,求出n个数据中的最大值。写出最大语句频度,该算法的时间复杂度。习题答案1.11.C,A2.B,D3.C4.C,A5.C,B1.21.线性结构、树形结构、图形结构,非线性结构2.没有、1、没有、13.前驱、1、后续、任意多个4.任意多个5.一对一、一对多、多对多6.有穷性、确定性、可行性、输入、输出7.最大语句频度:n2,时间复杂度:.O(n2)8.最大语句频度:n(n+1)/2,时间复杂度:.O(n2)9.最大语句频度:n3,时间复杂度:.O(n3)10.最大语句频度:n,时间复杂度:.O(n)11.最大语句频度:log2n,时间复杂度:.O(log2n) 习题2线性表2.1单项选择题1.一个向量(即一批地址连续的存储单元)第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是____。A.110B.108C.100D.1202.线性表的顺序存储结构是一种___的存储结构,而链式存储结构是一种___的存储结构。A.随机存取B.索引存取C.顺序存取D.散列存取3.线性表的逻辑顺序与存储顺序总是一致的,这种说法___。A.正确B.不正确4.线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续或不连续都可以5.在以下的叙述中,正确的是___。A.线性表的顺序存储结构优于链表存储结构B.线性表的顺序存储结构适用于频繁插入/删除数据元素的情况C.线性表的链表存储结构适用于频繁插入/删除数据元素的情况D.线性表的链表存储结构优于顺序存储结构6.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法___。A.正确B.不正确7.不带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL8.带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL9.非空的循环单链表head的尾结点(由p所指向)满足____。A.p->next==NULLB.p==NULLC.p->next==headD.p==head10.在双向循环链表的p所指结点之后插入s所指结点的操作是____。A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;B.p->right=s;p->right->left=s;s->left=p;s->right=p->right;C.s->left=p;s->right=p->right;p->right=s;p->right->left=s;D.s->left=p;s->right=p->right;p->right->left=s;p->right=s;11.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p;B.q->next=s;s->next=p;C.p->next=s;s->next=q;12.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。A.s->next=p;p->next=s;B.s->next=p->next;p->next=s;C.s->next=p->next;p=s;C.p->next=s;s->next=p;13.在一个单链表中,若删除p所指结点的后续结点,则执行____。A.p->next=p->next->next;B.p=p->next;p->next=p->next->next;C.p->next=p->next;D.p=p->next->next;14.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较____个结点。A.nB.n/2C.(n-1)/2D.(n+1)/215.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是____。A.O(1)B.O(n)C.O(n2)D.O(nlog2n)16.给定有n个元素的向量,建立一个有序单链表的时间复杂度是____。A.O(1))B.O(n)C.O(n2)D.O(n*log2n)2.2填空题(将正确的答案填在相应的空中)1.单链表可以做____的链接存储表示。2.在双链表中,每个结点有两个指针域,一个指向______,另一个指向_____。3.在一个单链表中p所指结点之前插入一个s(值为e)所指结点时,可执行如下操作:q=head;while(q->next!=p)q=q->next;s=newNode;s->data=e;q->next=;//填空s->next=;//填空4.在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q=p->next;p->next=____;//填空delete;//填空5.在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=____和p->next=____的操作。6.对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是____;在给定值为x的结点后插入一个新结点的时间复杂度是____。2.3算法设计题:1.设顺序表va中的数据元数递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。StatusInsert_SqList(SqList&va,intx){if(va.length+1>maxsize)returnERROR;va.length++;for(i=va.length-1;va.elem[i]>x&&i>=0;i--)va.elem[i+1]=va.elem[i];va.elem[i+1]=x;returnOK;}2.试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,….an)逆置为(an,an-1,….,a1)。voidreverse(inta[],intsize){inti,j,tmp;for(i=0,j=size-1;i{tmp=a[i];a[i]=a[j];a[j]=tmp;}}3.已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。voiddel(LinkListL,elemtypea,elemtypeb){p=L;q=p->next;while(q!=L&&q->data{p=q;q=q->next;}while(q!=L&&q->data{r=q;q=q->next;free(r);}if(p!=q)p->next
for(k=0;ks=s+B[i][j][k];sum=s;10.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。i=s=0;while(s{i++;s+=i;//s=s+i}11.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。i=1;while(i<=n)i=i*2;1.3算法设计题1.试写一算法,自大到小依次输出顺序读入的三个数X,Y和Z的值.2.试写一算法,求出n个数据中的最大值。写出最大语句频度,该算法的时间复杂度。习题答案1.11.C,A2.B,D3.C4.C,A5.C,B1.21.线性结构、树形结构、图形结构,非线性结构2.没有、1、没有、13.前驱、1、后续、任意多个4.任意多个5.一对一、一对多、多对多6.有穷性、确定性、可行性、输入、输出7.最大语句频度:n2,时间复杂度:.O(n2)8.最大语句频度:n(n+1)/2,时间复杂度:.O(n2)9.最大语句频度:n3,时间复杂度:.O(n3)10.最大语句频度:n,时间复杂度:.O(n)11.最大语句频度:log2n,时间复杂度:.O(log2n) 习题2线性表2.1单项选择题1.一个向量(即一批地址连续的存储单元)第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是____。A.110B.108C.100D.1202.线性表的顺序存储结构是一种___的存储结构,而链式存储结构是一种___的存储结构。A.随机存取B.索引存取C.顺序存取D.散列存取3.线性表的逻辑顺序与存储顺序总是一致的,这种说法___。A.正确B.不正确4.线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续或不连续都可以5.在以下的叙述中,正确的是___。A.线性表的顺序存储结构优于链表存储结构B.线性表的顺序存储结构适用于频繁插入/删除数据元素的情况C.线性表的链表存储结构适用于频繁插入/删除数据元素的情况D.线性表的链表存储结构优于顺序存储结构6.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法___。A.正确B.不正确7.不带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL8.带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL9.非空的循环单链表head的尾结点(由p所指向)满足____。A.p->next==NULLB.p==NULLC.p->next==headD.p==head10.在双向循环链表的p所指结点之后插入s所指结点的操作是____。A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;B.p->right=s;p->right->left=s;s->left=p;s->right=p->right;C.s->left=p;s->right=p->right;p->right=s;p->right->left=s;D.s->left=p;s->right=p->right;p->right->left=s;p->right=s;11.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p;B.q->next=s;s->next=p;C.p->next=s;s->next=q;12.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。A.s->next=p;p->next=s;B.s->next=p->next;p->next=s;C.s->next=p->next;p=s;C.p->next=s;s->next=p;13.在一个单链表中,若删除p所指结点的后续结点,则执行____。A.p->next=p->next->next;B.p=p->next;p->next=p->next->next;C.p->next=p->next;D.p=p->next->next;14.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较____个结点。A.nB.n/2C.(n-1)/2D.(n+1)/215.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是____。A.O(1)B.O(n)C.O(n2)D.O(nlog2n)16.给定有n个元素的向量,建立一个有序单链表的时间复杂度是____。A.O(1))B.O(n)C.O(n2)D.O(n*log2n)2.2填空题(将正确的答案填在相应的空中)1.单链表可以做____的链接存储表示。2.在双链表中,每个结点有两个指针域,一个指向______,另一个指向_____。3.在一个单链表中p所指结点之前插入一个s(值为e)所指结点时,可执行如下操作:q=head;while(q->next!=p)q=q->next;s=newNode;s->data=e;q->next=;//填空s->next=;//填空4.在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q=p->next;p->next=____;//填空delete;//填空5.在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=____和p->next=____的操作。6.对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是____;在给定值为x的结点后插入一个新结点的时间复杂度是____。2.3算法设计题:1.设顺序表va中的数据元数递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。StatusInsert_SqList(SqList&va,intx){if(va.length+1>maxsize)returnERROR;va.length++;for(i=va.length-1;va.elem[i]>x&&i>=0;i--)va.elem[i+1]=va.elem[i];va.elem[i+1]=x;returnOK;}2.试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,….an)逆置为(an,an-1,….,a1)。voidreverse(inta[],intsize){inti,j,tmp;for(i=0,j=size-1;i{tmp=a[i];a[i]=a[j];a[j]=tmp;}}3.已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。voiddel(LinkListL,elemtypea,elemtypeb){p=L;q=p->next;while(q!=L&&q->data{p=q;q=q->next;}while(q!=L&&q->data{r=q;q=q->next;free(r);}if(p!=q)p->next
s=s+B[i][j][k];
sum=s;
10.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。
i=s=0;
while(s{i++;s+=i;//s=s+i}11.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。i=1;while(i<=n)i=i*2;1.3算法设计题1.试写一算法,自大到小依次输出顺序读入的三个数X,Y和Z的值.2.试写一算法,求出n个数据中的最大值。写出最大语句频度,该算法的时间复杂度。习题答案1.11.C,A2.B,D3.C4.C,A5.C,B1.21.线性结构、树形结构、图形结构,非线性结构2.没有、1、没有、13.前驱、1、后续、任意多个4.任意多个5.一对一、一对多、多对多6.有穷性、确定性、可行性、输入、输出7.最大语句频度:n2,时间复杂度:.O(n2)8.最大语句频度:n(n+1)/2,时间复杂度:.O(n2)9.最大语句频度:n3,时间复杂度:.O(n3)10.最大语句频度:n,时间复杂度:.O(n)11.最大语句频度:log2n,时间复杂度:.O(log2n) 习题2线性表2.1单项选择题1.一个向量(即一批地址连续的存储单元)第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是____。A.110B.108C.100D.1202.线性表的顺序存储结构是一种___的存储结构,而链式存储结构是一种___的存储结构。A.随机存取B.索引存取C.顺序存取D.散列存取3.线性表的逻辑顺序与存储顺序总是一致的,这种说法___。A.正确B.不正确4.线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续或不连续都可以5.在以下的叙述中,正确的是___。A.线性表的顺序存储结构优于链表存储结构B.线性表的顺序存储结构适用于频繁插入/删除数据元素的情况C.线性表的链表存储结构适用于频繁插入/删除数据元素的情况D.线性表的链表存储结构优于顺序存储结构6.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法___。A.正确B.不正确7.不带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL8.带头结点的单链表head为空的判定条件是____。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL9.非空的循环单链表head的尾结点(由p所指向)满足____。A.p->next==NULLB.p==NULLC.p->next==headD.p==head10.在双向循环链表的p所指结点之后插入s所指结点的操作是____。A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;B.p->right=s;p->right->left=s;s->left=p;s->right=p->right;C.s->left=p;s->right=p->right;p->right=s;p->right->left=s;D.s->left=p;s->right=p->right;p->right->left=s;p->right=s;11.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p;B.q->next=s;s->next=p;C.p->next=s;s->next=q;12.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。A.s->next=p;p->next=s;B.s->next=p->next;p->next=s;C.s->next=p->next;p=s;C.p->next=s;s->next=p;13.在一个单链表中,若删除p所指结点的后续结点,则执行____。A.p->next=p->next->next;B.p=p->next;p->next=p->next->next;C.p->next=p->next;D.p=p->next->next;14.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较____个结点。A.nB.n/2C.(n-1)/2D.(n+1)/215.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是____。A.O(1)B.O(n)C.O(n2)D.O(nlog2n)16.给定有n个元素的向量,建立一个有序单链表的时间复杂度是____。A.O(1))B.O(n)C.O(n2)D.O(n*log2n)2.2填空题(将正确的答案填在相应的空中)1.单链表可以做____的链接存储表示。2.在双链表中,每个结点有两个指针域,一个指向______,另一个指向_____。3.在一个单链表中p所指结点之前插入一个s(值为e)所指结点时,可执行如下操作:q=head;while(q->next!=p)q=q->next;s=newNode;s->data=e;q->next=;//填空s->next=;//填空4.在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q=p->next;p->next=____;//填空delete;//填空5.在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=____和p->next=____的操作。6.对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是____;在给定值为x的结点后插入一个新结点的时间复杂度是____。2.3算法设计题:1.设顺序表va中的数据元数递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。StatusInsert_SqList(SqList&va,intx){if(va.length+1>maxsize)returnERROR;va.length++;for(i=va.length-1;va.elem[i]>x&&i>=0;i--)va.elem[i+1]=va.elem[i];va.elem[i+1]=x;returnOK;}2.试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,….an)逆置为(an,an-1,….,a1)。voidreverse(inta[],intsize){inti,j,tmp;for(i=0,j=size-1;i{tmp=a[i];a[i]=a[j];a[j]=tmp;}}3.已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。voiddel(LinkListL,elemtypea,elemtypeb){p=L;q=p->next;while(q!=L&&q->data{p=q;q=q->next;}while(q!=L&&q->data{r=q;q=q->next;free(r);}if(p!=q)p->next
{i++;
s+=i;//s=s+i
}
11.分析下面算法(程序段)给出最大语句频度,该算法的时间复杂度是____。
i=1;
while(i<=n)
i=i*2;
1.3算法设计题
1.试写一算法,自大到小依次输出顺序读入的三个数X,Y和Z的值.
2.试写一算法,求出n个数据中的最大值。
写出最大语句频度,该算法的时间复杂度。
习题答案
1.11.C,A2.B,D3.C4.C,A5.C,B
1.21.线性结构、树形结构、图形结构,非线性结构
2.没有、1、没有、1
3.前驱、1、后续、任意多个
4.任意多个
5.一对一、一对多、多对多
6.有穷性、确定性、可行性、输入、输出
7.最大语句频度:
n2,时间复杂度:
.O(n2)
8.最大语句频度:
n(n+1)/2,时间复杂度:
9.最大语句频度:
n3,时间复杂度:
.O(n3)
10.最大语句频度:
n
,时间复杂度:
.O(n
)
11.最大语句频度:
log2n,时间复杂度:
.O(log2n)
习题2线性表
2.1单项选择题
1.一个向量(即一批地址连续的存储单元)第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是____。
A.110B.108C.100D.120
2.线性表的顺序存储结构是一种___的存储结构,而链式存储结构是一种___的存储结构。
A.随机存取B.索引存取C.顺序存取D.散列存取
3.线性表的逻辑顺序与存储顺序总是一致的,这种说法___。
A.正确B.不正确
4.线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。
A.必须是连续的B.部分地址必须是连续的
C.一定是不连续的D.连续或不连续都可以
5.在以下的叙述中,正确的是___。
A.线性表的顺序存储结构优于链表存储结构
B.线性表的顺序存储结构适用于频繁插入/删除数据元素的情况
C.线性表的链表存储结构适用于频繁插入/删除数据元素的情况
D.线性表的链表存储结构优于顺序存储结构
6.每种数据结构都具备三个基本运算:
插入、删除和查找,这种说法___。
7.不带头结点的单链表head为空的判定条件是____。
A.head==NULLB.head->next==NULL
C.head->next==headD.head!
=NULL
8.带头结点的单链表head为空的判定条件是____。
9.非空的循环单链表head的尾结点(由p所指向)满足____。
A.p->next==NULLB.p==NULL
C.p->next==headD.p==head
10.在双向循环链表的p所指结点之后插入s所指结点的操作是____。
A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;
B.p->right=s;p->right->left=s;s->left=p;s->right=p->right;
C.s->left=p;s->right=p->right;p->right=s;p->right->left=s;
D.s->left=p;s->right=p->right;p->right->left=s;p->right=s;
11.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。
A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p;
B.q->next=s;s->next=p;C.p->next=s;s->next=q;
12.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。
A.s->next=p;p->next=s;B.s->next=p->next;p->next=s;
C.s->next=p->next;p=s;C.p->next=s;s->next=p;
13.在一个单链表中,若删除p所指结点的后续结点,则执行____。
A.p->next=p->next->next;B.p=p->next;p->next=p->next->next;
C.p->next=p->next;D.p=p->next->next;
14.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较____个结点。
A.nB.n/2C.(n-1)/2D.(n+1)/2
15.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是____。
A.O
(1)B.O(n)C.O(n2)D.O(nlog2n)
16.给定有n个元素的向量,建立一个有序单链表的时间复杂度是____。
(1))B.O(n)C.O(n2)D.O(n*log2n)
2.2填空题(将正确的答案填在相应的空中)
1.单链表可以做____的链接存储表示。
2.在双链表中,每个结点有两个指针域,一个指向______,另一个指向_____。
3.在一个单链表中p所指结点之前插入一个s(值为e)所指结点时,可执行如下操作:
q=head;
while(q->next!
=p)q=q->next;
s=newNode;s->data=e;
q->next=;//填空
s->next=;//填空
4.在一个单链表中删除p所指结点的后继结点时,应执行以下操作:
q=p->next;
p->next=____;//填空
delete;//填空
5.在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=____和p->next=____的操作。
6.对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是____;在给定值为x的结点后插入一个新结点的时间复杂度是____。
2.3算法设计题:
1.设顺序表va中的数据元数递增有序。
试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
StatusInsert_SqList(SqList&va,intx)
{
if(va.length+1>maxsize)returnERROR;
va.length++;
for(i=va.length-1;va.elem[i]>x&&i>=0;i--)
va.elem[i+1]=va.elem[i];
va.elem[i+1]=x;
returnOK;
2.试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,….an)逆置为(an,an-1,….,a1)。
voidreverse(inta[],intsize)
inti,j,tmp;
for(i=0,j=size-1;i{tmp=a[i];a[i]=a[j];a[j]=tmp;}}3.已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。voiddel(LinkListL,elemtypea,elemtypeb){p=L;q=p->next;while(q!=L&&q->data{p=q;q=q->next;}while(q!=L&&q->data{r=q;q=q->next;free(r);}if(p!=q)p->next
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
3.已知线性表中的元素以值递增有序排列,并以单链表作存储结构。
试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。
voiddel(LinkListL,elemtypea,elemtypeb)
p=L;q=p->next;
while(q!
=L&&q->data{p=q;q=q->next;}while(q!=L&&q->data{r=q;q=q->next;free(r);}if(p!=q)p->next
p=q;
q=q->next;
=L&&q->data
r=q;
free(r);
if(p!
=q)
p->next
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1