数据结构1-5章习题
数据结构 练习题

6. 已知一棵二叉树的先序遍历序列为EFHIGJK,中序遍历序列为HFIEJGK,则该二叉树根的右子树的根是
A)E B)F C)G D)J
7. 设结点A有左孩子结点B,右孩子结点C,则在先序遍历、中序遍历、后序遍历这三种基本遍历序列中B一定是C的
图6-2 例6.3附图
6 自测习题
1. 简答题
1. *根据权值(1,2,3,4,5,6),构造哈夫曼树,并计算二叉树的带权路径长度。
2. 请
将下图6-1所示的森林转换成二叉树。
图6-1 简答题2的附图森林
3. *已知一棵二叉树的中序遍历序列为DHBEAIFCGJK,该二叉树的后序遍历序列是HDEBIFJKGCA,现请画出这棵二叉树。
第1章 概述
一、简答题
1.简述以下术语的含义并说明它们之间的关系。
数据类型、数据结构、逻辑结构、存储结构
2.简述算法时间效率和空间效率的概念。
3.简述数据结构课程的目的和意义。
二、选择题
1.以下数据结构中,逻辑结构属于线性结构的是
A)有向图 B)链式栈 C)二叉树 D)二叉排序树
四、算法及分析
1.写出交换两个整型变量值的算法,并分析算法的时间复杂度。
2.写出求n的阶乘 的算法,并分析算法的时间复杂度。
第2章 线性表
一、简答题
1.在处理某个问题时,需要存储的数据总量不能确定,并经常需要进行数据的添加和删除操作,此时应选用哪种存储结构?为什么?
3.设有结点定义
struct node
{ int data;
struct node *next;
数据结构习题及答案

数据结构习题及答案第1章算法一、选择题1.算法的时间复杂度是指()。
A)执行算法程序所需要的时间B)算法程序中的指令条数C)算法执行过程中所需要的基本运算次数D)算法程序的长度2.算法的空间复杂度是指()。
A)算法程序的长度B)算法程序所占的存储空间C)算法执行过程中所需要的存储空间D)算法程序中的指令条数3.下面()的时间复杂度最好(即执行时间最短)。
logn)O()O(n ) B)A2logn2 ) D)O(n)C)O(n24.下面累加求和程序段的时间复杂度为()。
int sum(int a[],int n){int i, s=0;for (i=0;i<n;i++)< p="">s+=a[i];return s;}logn ) )O(A)O(1 ) B22))O(nC)O(n ) D中的算法,c[][]相加的结果存放到b[][]n阶矩阵5.下面是将两个n阶矩阵a[][]与。
该算法的时间复杂度为()void matrixadd(int a[][],intb[][],c[][],int n){int i,j;for (i=0;i<n;i++)< p="">for(j=0;j<n;j++)< p="">c[i][j]=a[i][j]+b[i][j];}nlog) )O(1 ) B)O(A22) )O(nO( n ) DC)。
6.下面程序段的时间复杂度为() 1int i=0,s1=0,s2=0;while(i<n)< p="">{if(i%2)s1+=i;elses2+=i;i++;}nlog) O(A)O(1 ) B)22) )O(nC)O(n ) D )。
7.下面程序段的时间复杂度为(int prime(int n){int i=1;int x=(int)sqrt(n);while(i<=x){i++;if(n%i==0)break;}if(i>x)return 1;elsereturn 0;}nlog) O(O(1 ) BA))2n) O()CO(n ) D))下面程序段的时间复杂度为(8.int fun(int n){int i=1,s=1;while(s<n)< p="">{i++;s+=i;}return i;}nlog)O(n/2) BA))O(2 2n) )O(C)O(n ) D9.下面程序段的时间复杂度为()int i,j,m,n,a[][];for(i=0;i<m;i++)< p="">for(j=0;j<n;j++)< p="">a[i][j]=i*j;22) )O(nA)O(m) BO(m+n) )C)O(m*n ) D )10. 下面程序段的时间复杂度为(int sum1(int n){int i,p=1,s=0;for(i=1;i<=n;i++){p*=i;s=s+p;}return s;}nlog) )O(A)O(1 ) B22)O(n ) D)O(nC)二、填空题复杂度。
数据结构C语言版第2版课后习题答案

数据结构C语言版第2版课后习题答案数据结构(C语言版)(第2版)课后习题答案李冬梅2015.3第1章绪论 0第2章线性表 (4)第3章栈和队列 (14)第4章串、数组和广义表 (27)第5章树和二叉树 (34)第6章图 (43)第7章查找 (55)第8章排序 (66)第1章绪论1•简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。
如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。
数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
在有些情况下,数据元素也称为元素、结点、记录等。
数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
例如,学生基本信息表中的学号、姓名、性别等都是数据项。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
例如:整数数据对象是集合N={0,± 1,±2,…},字母字符数据对象是集合C={ ‘ A',' B',…,'b',…,‘ z' },学生基本信息表也可是一个数据对象。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。
逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构:数据对象在计算机中的存储表示,也称为物理结构。
抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。
《数据结构》1至5章期末复习题

第一章一、单项选择题1. 数据结构是指()。
A.数据元素的组织形式B.数据类型C.数据存储结构D.数据定义2. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。
A.存储结构B.逻辑结构C.链式存储结构D.顺序存储结构3. 树形结构是数据元素之间存在一种()。
A.一对一关系B.多对多关系C.多对一关系D.一对多关系4. 设语句x++的时间是单位时间,则以下语句的时间复杂度为()。
for(i=1; i<=n; i++)for(j=i; j<=n; j++)x++;A.O(1)B.O( )C.O(n)D.O( )5. 算法分析的目的是(1),算法分析的两个主要方面是(2)。
A.找出数据结构的合理性B.研究算法中的输入和输出关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性(2) A.空间复杂度和时间复杂度 B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性6. 计算机算法指的是(1),它具备输入,输出和(2)等五个特性。
(1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法(2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性C.确定性,有穷性和稳定性D.易读性,稳定性和安全性7. 数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。
A.低 B.高 C.相同 D.不好说8. 数据结构作为一门独立的课程出现是在()年。
A.1946B.1953C.1964D.19689. 数据结构只是研究数据的逻辑结构和物理结构,这种观点()。
A.正确B.错误C.前半句对,后半句错D.前半句错,后半句对10. 计算机内部数据处理的基本单位是()。
A.数据B.数据元素C.数据项D.数据库二、填空题1. 数据结构按逻辑结构可分为两大类,分别是______________和_________________。
数据结构1-6章习题

算法与数据结构》第 1-6 章课堂测验(双号)一、选择题1、 已知一个栈的进栈序列是1,2,3,…,n,其输出序列是p i ,p 2,…,p n ,若p i =n,则 p i 的值。
( c )(A) i (B) n-i (C) n-i+1 (D) 不确定2、 设n 个元素进栈序列是1,2,3,…,n,其输出序列是p i ,p 2,…,p n ,若p i =3,则p 2 的值。
( c )(A) 一定是 2 (B) 一定是 1 (C) 不可能是 1 (D) 以上都不对3、 若一棵二叉树具有 10 个度为 2的结点,5 个度为 1 的结点,则度为 0 的结点 个数是( b )A.6B.11C.15D. 不确定4、 在下述结论中,正确的是( d ) ① 只有一个结点的二叉树的度为 0; ② 二叉树的度为 2;③ 二叉树的左右子树可任意交换 ;④ 深度为K 的完全二叉树的结点个数小于或等于深度相同的满二叉树。
A.①②③B. ②③④C. ②④D. ①④5、一棵树高为 K 的完全二 叉树至少有()个结点。
( a )A.2 k- 1 k-1 B.2k-1+1 k-1 C.2 k-1D.2k二、简答题1 简述下列术语:线性表,顺序表,链表。
2线性表:最常用且最简单的一种数据结构。
一个线性表是 n 个数据元素的有限序列。
3 顺序表:是指用一组连续的存储单元一次存储线性表中的数据元素。
物理结构和逻辑 结构都相邻。
4链表:逻辑结构相邻的数据元素物理结构不一定相邻。
采用指针的形式连接起来。
2何时选用顺序表,何时选用链表作为线性表的存储结构合适 ?各自的主要优 缺点是什么 ?不需要经常大量的修改表或需要随机存取的情况下可以选用顺序表; 相反需要经常大量的修改表,但不是频繁的随机存取的情况下可选用链式表。
3 链表所表示的元素是否有序 ?如有序,则有序性体现于何处 ?链表所表示的元素 是否一定要在物理上是相邻的 ?有序表的有序性又如何理解 ?答:有序。
数据结构1-5章随堂考试(陈倩诒版)附答案

一、填空题(每题2 分,共 20 分)1、实现数据结构的基本存储方法有:(),()。
2、若算法中的语句执行次数之和为 T ( n )=3525 n +4 n log n ,则算法的时间复杂度是()。
3、假设以 S 和 X 分别表示进栈和出栈操作,则对输入序列 a , b , c , d ,e 进行一系列操作 SSXSXSSXXX 之后,得到的输出序列为()。
4、在串 S="structure" 中,以 t 为首字符的子串有()个。
5、串是一种特殊的线性表,其特殊性体现在()。
6.顺序存储结构中数据元素之间的逻辑关系是由存储位置表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。
7.非空的单循环链表由头指针head指示,则其尾结点(由指针p所指)满足()。
8.()可作为实现递归函数调用的一种数据结构。
9.设S="I_ am_ a_ teacther",其长度为()。
10. 已知线性表A采用顺序存储结构,每个元素占用4个存储单元,第9个元素的地址为144,则第一个元素的地址是()。
二.选择(每题2 分,共16分)1. 算法指的是()。
A 对特定问题求解步骤的一种描述,是指令的有限序列。
B 计算机程序C 解决问题的计算方法D 数据处理2. 链表不具有的特点是()。
A 可随机访问任一元素B 插入、删除不需要移动元素C 不必事先估计存储空间D 所需空间与线性表长度成正比3.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印缓冲区,该缓冲区应该是一个()结构。
A 栈 B队列 C 数组 D线性表4.若某线性表经常的操作是取第i 个元素和找第i个元素的前趋,则采用()存储方法最节省时间。
A 顺序表B 单链表C 双链表D 单循环链表5.广义表(a, b, (c, (d)))的表尾是()。
A (d)B (c,(d))C bD (b,(c,(d)))6.设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5、e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的顺序是e2、e4、e3、e6、e5、e1,则栈S的容量至少应该是()。
【课后习题及答案】严蔚敏-数据结构课后习题及答案解析

6.算 法 的 五 个 重 要 特 性 是 _______、_______、______、_______、_______。 7.数据结构的三要素是指______、_______和________。 8.链式存储结构与顺序存储结构相比较,主要优点是 ________________________________。 9.设有一批数据元素,为了最快的存储某元素,数据结构宜用_________ 结构,为了方便插入一个元素,数据结构宜用____________结构。
四、算法分析题
for(i=1; i<=n; i++) for(j =1; j <=i ; j++) x=x+1; 分 析 :该 算 法 为 一 个 二 重 循 环 ,执 行 次 数 为 内 、外 循 环 次 数 相 乘 ,但 内 循环次数不固定,与外循环有关,因些,时间频度 T(n)=1+2+3+…+n=n*(n+1)/2 有 1/4≤T(n)/n2≤1,故它的时间复杂度为O(n2), 即T(n)与 n2 数 量级相同。 2、分析下列算法段的时间频度及时间复杂度 for (i=1;i<=n;i++) for (j=1;j<=i;j++) for ( k=1;k<=j;k++) x=i+j-k; 分析算法规律可知时间频度 T(n)=1+(1+2)+(1+2+3)+...+(1+2+3+…+n) 由于有 1/6 ≤ T(n)/ n3 ≤1,故时间复杂度为O(n3)
精品课程
课后习题答案数据结构-严来自敏 课后习题及答案解析第一章 绪论
数据结构(第二版)习题

第一章绪论一、问答题1.什么是数据结构?2.叙述四类基本数据结构的名称与含义。
3.叙述算法的定义与特性。
4.叙述算法的时间复杂度。
5.叙述数据类型的概念。
6. 叙述线性结构与非线性结构的差别。
7.叙述面向对象程序设计语言的特点。
8.在面向对象程序设计中,类的作用是什么?9.叙述参数传递的主要方式及特点。
10.叙述抽象数据类型的概念。
二、判断题(在各题后填写“√”或“×”)1.线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。
()2.算法就是程序。
()3. 在高级语言(如C或PASCAL)中,指针类型是原子类型。
()三、计算下列程序段中X=X+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x=x+1;四、试编写算法,求一元多项式Pn(x)=a0+a1x+a2x2+a3x3+…anxn的值Pn(x0),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。
注意:本题中的输入ai(i=0,1,…,n),x和n,输出为Pn(x0)。
通常算法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递。
(2)通过全局变量隐式传递。
试讨论这两种方法的优缺点,并在本题算法中以你认为较好的一种方式实现输入和输出。
第二章线性表2.1描述以下三个概念的区别:头指针,头结点,首元素结点。
2.2填空:(1)在顺序表中插入或删除一个元素,需要平均移动____元素,具体移动的元素个数与__插入或删除的位置__有关。
(2)在顺序表中,逻辑上相邻的元素,其物理位置______相邻。
在单链表中,逻辑上相邻的元素,其物理位置______相邻。
(3)在带头结点的非空单链表中,头结点的存储位置由______指示,首元素结点的存储位置由______指示,除首元素结点外,其它任一元素结点的存储位置由____指示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题1、在一个长度为n的顺序表的表尾插入一个新元素的时间复杂度为()A.O (n) B.O (1)C.O (n2 ) D.O (log2 n)2、以下关于顺序存储结构的叙述中,哪一条是不正确的?()A.存储密度大B.逻辑上相邻的节点物理上不必邻接C.可以通过计算机直接确定低I个节点的位置D.插入和删除操作不方便3、向一个有127个元素原顺序表中插入一个新元素并保存原来顺序不变,平均要移动()个元素。
A、8B、63.5C、63D、74、线性表是一个具有n个()的有限序列。
A.表元素B.字符C.数据元素D.数据项5、与数据元素本身的形式、内容、相对位置、个数无关的是数据的()A 存储结构B 逻辑结构C 算法D 操作6、线性链表不具有的特点是()。
A.随机访问B.不必事先估计所需存储空间大小C.插入与删除时不必移动元素D.所需空间与线性表长度成正比7、将长度为n的单链表连接在长度为m的单链表后的算法的时间复杂度为()A. O(n)B. O(1)C. O(m)D. O(m+n)8、链接存储的存储结构所占存储空间:(A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针(B)只有一部分,存放结点值(C)只有一部分,存储表示结点间关系的指针(D)分两部分,一部分存放结点值,另一部分存放结点所占单元数9、线性表若采用链式存储结构时,要求内存中可用存储单元的地址:(A)必须是连续的(B)部分地址必须是连续的(C)一定是不连续的(D)连续或不连续都可以10、线性表L在情况下适用于使用链式结构实现。
(A)需经常修改L中的结点值(B)需不断对L进行删除插入(C)L中含有大量的结点(D)L中结点结构复杂11、设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。
A. 单链表B.单循环链表C. 带尾指针的单循环链表D.带头结点的双循环链表12、若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。
则采用()存储方式最节省运算时间。
A.单链表B.双链表C.单循环链表D.带头结点的双循环链表13、在作进栈运算时,应先判别栈是否( ①),在作退栈运算时应先判别栈是否( ②)。
当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为( ③)。
①, ②: A. 空B. 满C. 上溢D. 下溢③: A. n-1 B. n C. n+1 D. n/214、为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的( ④)分别设在这片内存空间的两端,这样,当( ⑤)时,才产生上溢。
④: A. 长度 B. 深度 C. 栈顶 D. 栈底⑤: A. 两个栈的栈顶同时到达栈空间的中心点.B. 其中一个栈的栈顶到达栈空间的中心点.C. 两个栈的栈顶在栈空间的某一位置相遇.D. 两个栈均不空,且一个栈的栈顶到达另一个栈的栈底15、设数组data[m]作为循环队列的存储空间,front为队头指针,rear为队尾指针,则执行入队操作后其头指针rear的值为()。
A.rear=rear+1B.rear=(rear+1)%(m-1)C.rear=(rear-1)%mD.rear=(rear+1)%m16、栈中元素的进出原则是()。
A.先进先出B.后进先出C.栈空则进D.栈满则出17、若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则p i为A.i B.n=i C.n-i+1 D.不确定18、判定一个栈ST(最多元素为m0)为空的条件是A.ST->top<>0 B.ST->top=0 C.ST->top<>m0 D.ST->top=m019、判定一个队列QU(最多元素为m0)为满队列的条件是A.QU->rear -QU->front = = m0B.QU->rear -QU->front -1= = m0C.QU->front = = QU->rearD.QU->front = = QU->rear+120、数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为(A)r-f; (B)(n+f-r)% n;(C)n+r-f; (D)(n+r-f)% n21、如下陈述正确的是()A. 串是一种特殊的线性表B. 串的长度必须大于零C. 串中的元素只能为字母D. 空串即为空格字符串22、广义表((a,b,c,d))的表头是(),表尾是()。
A. aB.()C.(a,b,c,d)D.(b,c,d)23、已知广义表LS=((a,b,c),(d,e,f)), 运用head和tail函数取出LS中原子e 的运算是( )。
A. head(tail(LS))B. tail(head(LS))C. head(tail(head(tail(LS)))D. head(tail(tail(head(LS))))二、判断题1、线性表的顺序存储结构是一种随机存储结构。
()(2004年专升本)2、算法的运行时间涉及加、减、乘、除、转移、存、取、等基本运算。
要想准确地计算总运算时间是不可行的。
()3、为度量一个搜索算法的性能,需要在时间和空间方面进行权衡。
()4、顺序表用一维数组作为存储结构,因此顺序表是一维数组。
()5、数据的基本单位是数据项。
()6、数组元素之间的关系,既不是线性的,也不是树形的。
()7、线性表采用顺序存储表示时,必须占用一片连续的存储单元。
()8、链表的每个结点中都恰好包含一个指针。
9、链表的物理存储结构具有同链表一样的顺序。
10、链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。
三、填空题1、算法的五个特征。
2、道路交通问题属于()数据结构。
3、有哪几种逻辑结构()()()()。
4、数据的逻辑结构是从逻辑关系上描述数据,它与数据的()无关,是独立于计算机的。
四、算法设计题1、在非递减有序的顺序表中插入元素e,使其仍保持有序。
Status Orderlistinsert(SqList &L , ElemType e){//在非递减有序的顺序表中插入元素e,使其仍保持有序if (L.length = = MAXSIZE)return ERROR;for( i=L.length-1 ; i>=0 && L.elem[i]>x ; i- - )L.elem [i+1]=L.elem[i]; //元素后移L.elem[i+1]= e ; //插入eL.length ++ ; //表长增加return OK;}2、一个一维整数数组A[m]中有n (n≤m)个非空整数,它们相继存放于数组的前端并已按非递减顺序排列,针对下列情况,分别编写相应的函数。
(1)将数组中所有整数原地逆置,即利用原数组空间将数组中全部元素反转。
void reverse (int A [ ], int n ){}分析:数组的中间元素不动,首尾元素对应互换。
void reverse (int A [ ], int n ) {int mid=n/2 , I, temp ;for ( i=0 ; i<mid ; i++ ){temp=A[i] ; A[i]=A[n-i-1] ;A[n-i-1]=temp ;}}(2)删除数组中多余的值相等的整数(只保留第一次出现的那个整数)。
V oid delDuplicate (int A [ ] , int &n){}分析:定位每一个数组元素,依次扫描其后的元素,遇到值相等的整数就删除,同时n减1。
void delDuplicate (int A [ ] , int & n) {int i=0 , j , k ;while (i<n-1 ) {j = i + 1 ;while (j<n) {if (A[i]= =A[j]) {for ( k=j+1 ; k<n ; k++ ) A[k-1]=A[k] ;n-- ;}else j++;}i++;}}3、int arrange(int a[],int I,int h,int x) //l和h分别为数据区的下界和上界{ int i,j,t;i=l;j=h;while(i<j){while(i<j && a[j]>=x ) j--;while(i<j && a[i]<x ) i++;if(i<j){t=a[j];a[j]=a[i];a[i]=t;}}if(a[i]<x) return i;else return -1;}(1)写出该函数的功能。
(2)写出一个调用上述函数实现下列功能算法:对一整数数组b[n]中的元素进行重新排列,将所有负数均调整到数组的低下标端,若有零值,这置于两者之间,并返回数组中零元素的个数。
(1)分析:对数组a[l..h]进行重新排列,小于x的元素移动到数组的低下标端,大于等于x的元素移动到高下标端;同时统计数组中小于x的元素的个数(返回值+1)。
arrange函数作用:调整数组a[]中元素并返回分界值i,使得<x的元素分布在a[l..i]上,>=x的元素分布在a[i+1..h]上。
(2)int f(int b[], int n){ int j ,k;j=arrange(b,0,n-1,0);k=arrange(b,j+1,n-1,1);return k-j;}或:int f(int b[], int n){ int j ,k;j=arrange(b,0,n-1,1);k=arrange(b,0,j,0);return j-k;}4、设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C。
要求B表的结点是A表中值小于零的点,而C表中的结点为A表中值大于零的结点。
(链表A的元素类型为整型,要求B、C表可使用A表的结点)void split ( linklist &lb , linklist &lc , linklist la){linklist p = la->next , r , s ;lb = ( linklist ) malloc ( sizeof ( lnode ) );lc = ( linklist ) malloc ( sizeof ( lnode ) );r = lb; s = lc;while ( p != NULL ){ if ( p->data < 0 ) //将结点链入B表中{ r->next=p ; r=r->next ; }else if ( p->data > 0 ) //将结点链入C表中{ s->next=p ; s=s->next ; }p = p ->next;}free ( la );}5、两个带头结点的循环单链表ha和hb,设计一个算法将hb接在ha的后面合并成一个带头结点的单链表hc,要求不再开辟新的空间。