已知带头结点的动态单链表L的结点是按整数值递增排列的,试写一算法将值为x的结点插入表L中,使L仍然有序。
算法设计

1.试编写在带头结点的单链表中删除(一个)最小值结点的(高效)算法。
【题目分析】本题要求在单链表中删除最小值结点。
单链表中删除结点,为使结点删除后不出现“断链”,应知道被删结点的前驱。
而“最小值结点”是在遍历整个链表后才能知道。
所以算法应首先遍历链表,求得最小值结点及其前驱。
遍历结束后再执行删除操作。
LinkedList Delete(LinkedList L)∥L是带头结点的单链表,本算法删除其最小值结点。
{p=L->next;∥p为工作指针。
指向待处理的结点。
假定链表非空。
pre=L;∥pre指向最小值结点的前驱。
q=p;∥q指向最小值结点,初始假定第一元素结点是最小值结点。
while(p->next!=null){if(p->next->data<q->data){pre=p;q=p->next;} ∥查最小值结点p=p->next;∥指针后移。
}pre->next=q->next;∥从链表上删除最小值结点free(q);∥释放最小值结点空间}∥结束算法delete。
2.将两个递增的有序链表合并为一个递增的有序链表。
要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。
表中不允许有重复的数据。
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->data<pb->data){ 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的头结点}3.已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。
数据结构第2章作业 线性表(答案)

第2章线性表班级学号__________-姓名一、判断正误(×)1. 链表的每个结点中都恰好包含一个指针。
链表中的结点可含多个指针域,分别存放多个指针。
例如,双向链表中的结点可以含有两个指针域,分别存放指向其直接前趋和直接后继结点的指针。
(×)2. 链表的物理存储结构具有同链表一样的顺序。
链表的存储结构特点是无序,而链表的示意图有序。
(×)3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。
链表的结点不会移动,只是指针内容改变。
(×)4. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。
混淆了逻辑结构与物理结构,链表也是线性表!且即使是顺序表,也能存放记录型数据。
(×)5. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。
正好说反了。
顺序表才适合随机存取,链表恰恰适于“顺藤摸瓜”(×)6. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
前一半正确,但后一半说法错误,那是链式存储的优点。
顺序存储方式插入、删除运算效率较低,在表长为n的顺序表中,插入和删除一个数据元素,平均需移动表长一半个数的数据元素。
(×)7. 线性表在物理存储空间中也一定是连续的。
线性表有两种存储方式,顺序存储和链式存储。
后者不要求连续存放。
(×)8. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。
线性表有两种存储方式,在顺序存储时,逻辑上相邻的元素在存储的物理位置次序上也相邻。
(×)9. 顺序存储方式只能用于存储线性结构。
顺序存储方式不仅能用于存储线性结构,还可以用来存放非线性结构,例如完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式。
(后一节介绍)(×)10. 线性表的逻辑顺序与存储顺序总是一致的。
理由同7。
链式存储就无需一致。
数据结构习题

数据结构习题1 概述一、选择题:1、下列算法的时间复杂度是()for(i=0;i<="" p="">c[i]=i;A.O(1)B.O(n)C.O(log2n)D.O(nlog2n)2、数据在计算机存储器内表示时,根据结点的关键字直接计算出该结点的存储地址,这种方法称为()A.索引存储方法B.顺序存储方法C.链式存储方法D.散列存储方法3、以下哪一个术语与数据的存储结构无关?()。
A.顺序表B.链表C.散列表D.队列4、算法在发生非法操作时可以做出处理的特性称为()。
A.正确性B.易读性C.健壮性D.高效性5、逻辑结构是指数据元素的()。
A.关联方式B.存储方式C.结构D.数据项6、研究数据结构就是研究()。
A.数据的逻辑结构B.数据的存储结构C.数据的逻辑结构和存储结构D.数据的逻辑结构、存储结构及其数据的运算7、从逻辑上可以把数据结构分为()。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构8、以下有关数据的叙述中错误的是()。
A.计算机能够处理的数据包括整数、实数、字符、声音、图像等B.数据的逻辑结构是从逻辑关系上描述数据,它取决于数据的存储方式C.数据存储结构的实现依赖于计算机语言D.数据的运算是定义在数据的逻辑结构上的9、数据的基本单位是()。
A.数据结构B.数据元素C.数据项D.文件10、下列算法的时间复杂度是()for(i=0;i<="" p="">for(j=0;j<="" p="">a[i][j]=i*j;A.O(m2)B.O(n2)C.O(m×n)D.O(m+n)11、算法分析的两个主要方面是()。
A.正确性和简明性B.数据复杂性和程序复杂性C.可读性和可维护性D.时间复杂性和空间复杂性二、填空题:1、数据结构是相互之间存在一种或多种特定关系的数据元素的集合,它包括三方面的内容,分别是数据的逻辑结构、()和()。
华南理工大学网络教育学院 数据结构同步练习册答案

6.3 分别写出题 6.1 所示二叉树的先根,中根和后根序列。 答:先根:ABCDEFGHIJ 二叉树。 答: 由后根遍历序列得到二叉树的根结点 A (后根序列中最后一个结点) ; 在中序序列中, A 的左力是 A 的左子树上的结点,A 的右边是 A 的右子树上的结点;再到后根序列中找左子 树和右子树的根结点,依次类推,直到画出该二叉树。 中根:DCBAFEHJIG 后根:DCBFJIHGEA 6.4 已知一棵二叉树的中根序列和后根序列分别为 BDCEAFHG 和 DECBHGFA,试画出这棵
(4) int x = 91, y = 100;
while (y > 0) { if (x > 100) else x++; } 答:100 解析: x=91; //1 y=100; //1
{
x = x -10; y--;
}
while(y>0) //1101 if(x>100) //1100 { x=x-10; //100 y--; //100 } else x++; //1000 以上程序段右侧列出了执行次数。该程序段的执行时间为: T(n)=O(1)
while ( i <= n ) { k = k+10*i; i++; } 答:n-1
解析: i=1; //1 k=0; //1 while(i<n) //n { k=k+10*i; //n-1 i++; //n-1 } 由以上列出的各语句的频度,可得该程序段的时间消耗: T(n)=1+1+n+(n-1)+(n-1)=3n 可表示为 T(n)=O(n)
x++; y++;
2016新编1线性表的逻辑顺序与存储顺序总是一致的

第二章习题一判断题1.线性表的逻辑顺序与存储顺序总是一致的。
2.顺序存储的线性表可以按序号随机存取。
3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。
4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。
5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。
6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。
7.线性表的链式存储结构优于顺序存储结构。
8.在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。
9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。
10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。
二单选题 (请从下列A,B,C,D选项中选择一项)1.线性表是( ) 。
(A) 一个有限序列,可以为空;(B) 一个有限序列,不能为空;(C) 一个无限序列,可以为空;(D) 一个无序序列,不能为空。
2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。
插入一个元素时平均要移动表中的()个元素。
(A) n/2 (B) n+1/2 (C) n -1/2 (D) n3.线性表采用链式存储时,其地址( ) 。
(A) 必须是连续的;(B) 部分地址必须是连续的;(C) 一定是不连续的;(D) 连续与否均可以。
4.用链表表示线性表的优点是()。
(A)便于随机存取(B)花费的存储空间较顺序存储少(C)便于插入和删除(D)数据元素的物理顺序与逻辑顺序相同5.某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用( )存储方式最节省运算时间。
(A)单链表(B)双链表(C)单循环链表(D)带头结点的双循环链表6.循环链表的主要优点是( )。
(A)不在需要头指针了(B)已知某个结点的位置后,能够容易找到他的直接前趋(C)在进行插入、删除运算时,能更好的保证链表不断开(D)从表中的任意结点出发都能扫描到整个链表7.下面关于线性表的叙述错误的是( )。
《数据结构》自考同步习题

数据结构习题集1 概述一、选择题:1、下列算法的时间复杂度是()for(i=0;i<n;i+ +)c[i]=i;A.O(1)B.O(n)C.O(log2n)D.O(nlog2n)2、数据在计算机存储器内表示时,根据结点的关键字直接计算出该结点的存储地址,这种方法称为()A.索引存储方法B.顺序存储方法C.链式存储方法D.散列存储方法3、以下哪一个术语与数据的存储结构无关?()。
A.顺序表B.链表C.散列表D.队列4、算法在发生非法操作时可以做出处理的特性称为()。
A.正确性B.易读性C.健壮性D.高效性5、逻辑结构是指数据元素的()。
A.关联方式B.存储方式C.结构D.数据项6、研究数据结构就是研究()。
A.数据的逻辑结构B.数据的存储结构C.数据的逻辑结构和存储结构D.数据的逻辑结构、存储结构及其数据的运算7、从逻辑上可以把数据结构分为()。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构8、以下有关数据的叙述中错误的是()。
A.计算机能够处理的数据包括整数、实数、字符、声音、图像等B.数据的逻辑结构是从逻辑关系上描述数据,它取决于数据的存储方式C.数据存储结构的实现依赖于计算机语言D.数据的运算是定义在数据的逻辑结构上的9、数据的基本单位是()。
A.数据结构B.数据元素C.数据项D.文件10、下列算法的时间复杂度是()for(i=0;i<m;i+ +)for(j=0;j<n;j+ +)a[i][j]=i*j;A.O(m2)B.O(n2)C.O(m×n)D.O(m+n)11、算法分析的两个主要方面是()。
A.正确性和简明性B.数据复杂性和程序复杂性C.可读性和可维护性D.时间复杂性和空间复杂性二、填空题:1、数据结构是相互之间存在一种或多种特定关系的数据元素的集合,它包括三方面的内容,分别是数据的逻辑结构、()和()。
2、数据的逻辑结构是从逻辑关系上描述数据,它与数据的()无关,是独立于计算机的。
已知带头结点的动态单链表L中的结点是按整数值递增排序的,编写算法将值为x的结点插入到表L中,使L仍然有序

}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
pc->next=pa?pa:pb; //插入剩余段
n=ListLength_L(Lc);
p=new LNode1;
cin>>p->data;
p->next=L->next;L->next=p; //插入到表头
}
cout<<"链表中元素排列顺序为"<<endl;
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
//**********************************插入********9/21~9/25****************************************************
nizhi(Lc,n);
delete Lb; //释放Lb的头结点
}
//**********************************创建循环链表*********10/6*************************************************
struct LNode1 *prior;
struct LNode1 *next;
int freq;
}LNode1,*LinkList1;
《算法与数据结构》第1~3章 习题(包含了线性表、栈和队列,含答案)

{ p=p1; p1=p1->next; p->next= pa->next; pa->next= p; p2= p2->next;s1=s1+1;};
的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是(C)。
A. 6 B. 4 C. 3 D. 2
13.若用一个大小为6的数组来实现循环队列,且当前rear和
front的值分别为0和3,当从队列中删除一个元素,再加入两个
元素后,rear和front的值分别为多少?(B)
A. 1和 5 B. 2和4 C. 4和2 D. 5和1
10. 表达式3* 2^(4+2*2-6*3)-5求值过程中当扫描到6时,对
象栈和算符栈为( D ),其中^为乘幂 。
• 3,2,4,1,1;*^(+*- B. 3,2,8;*^- C. 3,2,4,2,2;*^(-
D. 3,2,8;*^(-
算法与数据结构
第1~3章 习题课
5 /31
11.循环队列存储在数组A[0..m]中,则入队时的操作为(D)。
C. q->next=p;q->pre=p->pre;p->pre->next=q;p->pre=q;
D. q->pre=p->pre;q->next=q;p->pre=q;p->pre=q; 5.栈的特点是( B ),队列的特点是( A ),栈和队列都是 ( A )。若进栈序列为1,2,3,4 则( C )不可能是一个出栈序 列(不一定全部进栈后再出栈);若进队列的序列为1,2,3,4 则 ( E )是一个出队列序列。 ①, ②: A. 先进先出 B. 后进先出 C. 进优于出 D. 出 优于进