数据结构模拟题(开卷)
数据结构模拟测验题

数据结构模拟试卷一一、单选题(每小题2分,共20分)1. 在数据结构的讨论中把数据结构从逻辑上分为()。
A.内部结构与外部结构 B. 静态结构与动态结构 C. 线性结构与非线性结构 D. 紧凑结构与非紧凑结构2. 采用线性链表表示一个向量时,要求占用的存储空间地址()。
A. 必须是连续的B. 部分地址必须是连续的C. 一定是不连续的D. 可连续可不连续3. 采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为()。
A. nB. n/2C. (n-1)/2D. (n+1)/24. 在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行()。
A. s→link = p→link; p→link = s;B. p→link = s; s→link = q;C. p→link = s→link; s→link = p;D. q→link = s; s→link = p;5. 如果想在4092个数据中只需要选择其中最小的10个,采用()方法最好。
A.冒泡排序B. 堆排序C. 直接插入排序D. 快速排序6. 设有两个串t和p,求p在t中首次出现的位置的运算叫做()。
A. 求子串B. 模式匹配C. 串替换D. 串连接7. 在数组A中,每一个数组元素A[i][j]占用3个存储单元,行下标i从1到8,列下标j从1到10。
所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储单元是()。
A. 80B. 100C. 240D. 2708. 将一个递归算法改为对应的非递归算法时,通常需要使用()。
A. 栈B. 队列C. 循环队列D. 优先队列9. 一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为()。
A. 4, 3, 2, 1B. 2, 4, 3, 1C. 1, 2, 3, 4D. 3, 2, 1, 410. 在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是()。
数据结构模拟试卷及参考答案

数据结构模拟试卷及参考答案一、简答题(共10题,每题10分,共计100分)1. 什么是数据结构?请简要解释。
数据结构是计算机中用于组织和存储数据的方式,它包含了一系列的数据元素,以及这些数据元素之间的关系和操作。
通过使用不同的数据结构,可以更高效地存储、查找和操作数据。
2. 请解释什么是栈,并给出一个栈的应用场景。
栈是一种具有特定操作限制的数据结构,它遵循"先进后出"(LIFO)的原则。
栈的应用场景包括函数调用、表达式求值、撤销操作以及浏览器中的历史记录。
3. 什么是队列?请给出一个队列的实际应用例子。
队列是一种具有特定操作限制的数据结构,它遵循"先进先出"(FIFO)的原则。
一个实际应用例子是操作系统的进程调度,进程按照到达时间加入队列,并按照一定规则出队执行。
4. 请解释什么是链表,并给出一个链表的优点和缺点。
链表是一种动态数据结构,它由一系列节点构成,每个节点包含数据和指向下一个节点的指针。
链表的优点是可以动态地分配内存空间,且插入和删除节点的时间复杂度为O(1)。
缺点是访问链表某个具体节点的时间复杂度为O(n),且需要额外的内存空间存储指针。
5. 请解释什么是树,并给出一个树的实际应用例子。
树是一种分层次的数据结构,它由一系列节点和节点之间的关系构成。
一个实际应用例子是文件系统的目录结构,文件和文件夹通过树的结构进行组织和存储。
6. 请解释什么是图,并给出一个图的实际应用例子。
图是一种由节点和节点之间的连接关系组成的数据结构。
一个实际应用例子是社交网络,人与人之间的关系可以用图来表示,每个人是一个节点,节点之间的连接表示关系。
7. 请解释什么是散列(哈希)表,以及它的优势和劣势。
散列表是一种根据关键字直接访问的数据结构,它通过将关键字映射到表中的位置来实现快速的查找操作。
散列表的优势是查找操作的平均时间复杂度为O(1)。
劣势是如果存在多个关键字映射到同一个位置,就会发生冲突,需要解决冲突问题。
数据结构模拟题(开卷)

数据结构模拟题(开卷)《数据结构》模拟题(开卷)⼀、单项选择题1.分析下列算法suanfa1(n):void suanfa1(int n){ int i,j,x=1;for(i=0;ifor(j=0;jx=x*2;printf("%d",x)}其中语句"x=x*2;"的执⾏次数是( D )。
A.(n*2)2B.(n-1)2C.(n+1)2D.n22.折半查找有序表(16,20,30,35,40,46,60,80),若查找元素80,需依次与表元素( D )进⾏⽐较。
A.35,46,80B.40,60C.40,60,80D.35,46,60,803.对长度为10的表作选择(简单选择)排序,共需⽐较( A )次关键字。
A.45B.90C.10D.1104.下列算法suanfa2(n)的时间复杂度为( A )。
int suanfa1(int n){ int i,x=0;for (i=0;i<5;i++)for (j=1;j<=n;j++)x+=2;return x;}A.O(n)B.O(n5)C.O(5n)D.O(n2)5.线性表在( B )时, 宜⽤顺序表作存储结构。
A.经常作插⼊、删除B.经常随机存取C.⽆⾜够连续存储空间D.经常作动态查找6.设⼴义表LS=((a,b),c,(d,e)),执⾏操作GetTail(GetHead(LS))后的结果是( A )。
A.(b)B.bC.(c,(d,e))D.(a,b)7.深度为k的满⼆叉树有( C )个叶⼦。
A.k2-1B.2K-1-1C.2K-1D.k28.有16个顶点的⽆向图最多可能有( D )个连通分量。
A.32B.8C.256D.169. ( C )是'Hua**Zhong**Da'的⼦串。
A.HuaB.zhongC.'*Da'D.'HuaZhongDa'10.字符串的长度指的是串中( B )的个数。
数据结构模拟卷

一、判断题 (每题1分,共10分)1. 有回路的有向图不能完成拓扑排序。
( )2. 图的深度优先搜索是一种典型的回溯搜索的例子,可以通过递归算法求解。
( )3. 边数很多的稠密图,适宜用邻接矩阵表示。
()4. 在二叉排序树中插入新结点时,新结点总是作为叶子结点插入。
()5. 对一个有向图进行拓扑排序,一定可以将图的所有顶点按其关键字大小排列到一个拓扑有序的序列中。
( )6. 算法和程序原则上没有区别,在讨论数据结构时二者是通用的。
( )7. 进行折半查找的表必须是顺序存储的有序表。
( )8. 对平衡二叉树进行中根遍历,可得到结点的有序序列。
()9. 邻接矩阵适用于稠密图(边数接近于顶点数的平方),邻接表适用于稀疏图(边数远小于顶点数的平方)( )。
10. 对一个连通图进行一次深度优先搜索可以遍访图中的所有顶点。
( )二、单项选择题 (每题2分,共20分)1. 在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是()。
A.O(1)B.O(n)C.O(n2)D.O(nlog2n)2. 数组A[5][6]的每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[4][4]的地址为()。
A.1140B.1145C.1120D.11253. 在一个链队中,假设f和r分别为队首和队尾指针,则插入s所指结点的运算是()。
A.f->next=s;f=s;B.r->next=s;r=s;C.s->next=r;r=s;D.s->next=f;f=s;4. 在一个单链表中已知q所指的结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行()。
A. s->next=p->next;p->next=s;B.p->next=s->next;s->next=p;C. q->next=s;s->next=p;D.p->next=s;s->next=q;5. 对于如下图所示的带权有向图,从顶点1到顶点5的最短路径为()。
数据结构模拟题(开卷)

《数据结构》模拟题(补)一.单项选择题1.在线性表的下列存储结构中,读取元素花费时间最少的是【】。
A.单链表B.双链表C.顺序表D.循环链表2.设计一个判定表达式中左、右括号是否配对出现的算法,采用【】数据结构最佳。
A.集合B.线性表C.队列D.栈3.n个结点的线索二叉树上含有的线索数为【】。
A.2n B.n-1 C.n D.n+14.设广义表D=(a,(b,c)),则tail(D)=【】。
A.b,c B.(b,c) C.((b,c)) D.c5.由4个结点可以构造出【】种不同的二叉树。
A.12 B.13 C.14 D.156.在栈中,出栈操作的时间复杂度为【】。
A.O(1) B.O(n) C.O(log2n) D.O(n2)7.假设Q[0..len-1]表示循环队列,f为队头指针,r为队尾指针,则进队操作语句是【】。
A.f=f+1 B.r=r+1 C.f=(f+1)%len D.r=(r+1)%len8.一个n*n的对称矩阵,如果以行或列为主序放入内存,则其容量为【】。
A.n*n B.n*n/2 C.n*(n+1)/2 D.(n+1)*(n+1)/29.队列操作的原则是【】。
A.进优于出B.出优于进C.先进先出D.后进先出10.下列数据结构中,【】是非线性数据结构。
A.栈B.串C.队列D.树11.两个指针p和q,分别指向单链表的两个元素,p所指元素是q所指元素的前驱,则【】。
A.p==q B.q->next=p C.p->next=q D.p->next=q->next12.数组A中,每个元素的长度为4个字节,行下标i从1到5,列下标j从1到4,从首地址SA开始连续存放在存储器内,该数组按行存放时,元素A[3][2]的起始地址为【】。
A.SA+20 B.SA+36 C.SA+40 D.SA+4513.已知一个顺序存储的线性表,设每个结点需占m个存储单元,若第一个结点的地址为d1,则第i个结点的地址为【】。
十套数据结构模拟题+答案

数据结构试卷(一)一、选择题(20分)1.组成数据的基本单位是()。
(A) 数据项(B) 数据类型(C) 数据元素(D) 数据变量2.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是()。
(A) 线性结构(B) 树型结构(C) 图型结构(D) 集合3.数组的逻辑结构不同于下列()的逻辑结构。
(A) 线性表(B) 栈(C) 队列(D) 树4.二叉树中第i(i≥1)层上的结点数最多有()个。
(A) 2i (B) 2i(C) 2i-1(D) 2i-15.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为()。
(A) p->next=p->next->next (B) p=p->next(C) p=p->next->next (D) p->next=p6.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是()。
(A) 6 (B) 4 (C) 3 (D) 27.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为()。
(A) 100 (B) 40 (C) 55 (D) 808.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为()。
(A) 3 (B) 4 (C) 5 (D) 19.根据二叉树的定义可知二叉树共有()种不同的形态。
(A) 4 (B) 5 (C) 6 (D) 710.设有以下四种排序方法,则()的空间复杂度最大。
(A) 冒泡排序(B) 快速排序(C) 堆排序(D) 希尔排序二、填空题(30分)1.设顺序循环队列Q[0:m-1]的队头指针和队尾指针分别为F和R,其中队头指针F指向当前队头元素的前一个位置,队尾指针R指向当前队尾元素所在的位置,则出队列的语句为F =____________;。
数据结构试卷和答案

《数据结构》试题参考答案 (开卷)(电信系本科2001级 2002年12月)一、回答下列问题 (每题4分,共36分)1. 某完全二叉树共有15381个结点,请问其树叶有多少个? 答:n2=⎡n/2⎤=⎡15381/2⎤=7691(个)2. 假设有二维数组A 7×9,每个元素用相邻的6个字节存储,存储器按字节编址。
已知A 的起始存储位置(基地址)为1000,末尾元素A[6][8]的第一个字节地址为多少?若按列存储时,元素A[4][7]的第一个字节地址为多少?答:① 末尾元素A[6][8]的第一个字节地址=1000+(7行×9列—1)×6B =1000+62×6=1372 ②按列存储时,元素A[4][7]的第一个字节地址=1000+(7列×7行+4)×6B =1000+53×6=1318 3. 在KMP 算法中,已知模式串为ADABBADADA ,请写出模式串的next[j]函数值。
答:根据0 当j =1时next[ j ]= max { k |1<k<j 且‘T 1…T k-1’=‘T j-(k-1) …T j-1’ }1 对应模式串的next[ j ] 演示程序亦验证了结果: next[j]=03 4. 已知一棵二叉树的前序序列和中序序列分别为:ABDEGCFH 和DBGEACHF ,则该二叉树的后序序列是什么?答:法1:先画树而得后序序列;A(DBGE) (CHF)B C 结论:D G E B H F C AD (GE) (HF)E F G H法2:直接推出后序序列step1: (DBGE) (CHF) A step2: D(GE)B (HF) C A step3: DGE B HF C A5. 请证明:用二叉链表法(Lchild-Rchild )存储包含n 个结点的二叉树,必有n+1个指针域为空。
答:因为:用二叉链表存储包含n 个结点的二叉树,结点共有2n 个链域;又因为:二叉树中除根结点外,每一个结点有且仅有一个双亲,这就意味着只有n-1个结点的链域存放指向非空子女结点的指针(换句话说,有后继孩子链接的指针仅n-1个);所以,空指针数目=全部指针数2n -所有非空指针数(n-1)=所有空指针数=n +1,证毕。
数据结构(第二版)模拟测试题4套及答案

试卷B一、选择题(本题共20分,每题2分)1.在数据结构中,从逻辑上可以把数据结构分成( ) 。
A .动态结构和静态结构 B. 线性结构和非线性结构 C. 紧凑结构和非紧凑结构 D. 内部结构和外部结构 2. 下列程序段的时间复杂度是( )count=0;for(k=1;k<=n;k*=2) for(j=1;j<=n;j++) count++;A.O(nlog2n)B.O(n)C.O(log2n)D.O(n2) 3. 以下描述错误的是:( )A. 线性表是n 个数据元素的有限非空集合。
B. 栈和队列都是操作受限的线性表。
C. 串(或字符串)是由零个或多个字符组成的有限序列。
D. 非空栈中的栈顶指针top 始终指向栈顶元素的下一个位置。
4. 若采用少用一个队列空间的方法来区分队满队空两种状态,则判定一个顺序循环队列 Q (最大队列长度MAXSIZE )为满队列的条件是( )。
A. Q.front=Q.rearB. Q.front!=Q.rearC. Q.front=(Q.rear+1) % MAXSIZED. Q.front!=(Q.rear+1) % MAXSIZE 5. 按照二叉树的定义,具有 3 个结点的二叉树有( )种。
A. 3 B. 4 C. 5 D. 66. 设矩阵A (如下图所示)是一个对称矩阵,为了节省存储,将其下三角(包括对角线)部分按行序存放在一维数组 B[n(n+1)/2]中,对下三角部分中任一元素 ai,j(i ≥j),在一维数组 B 的下标位置k 的值是( )。
A. i(i-1)/2+j-1 B. i(i-1)/2+j C. i(i+1)/2+j-1 D. i(i+1)/2+j0,01,01,11,01,11,1...............n n n n a a a A a a a ----⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦7. 有一个有序表为{5, 18,23, 33, 42, 54,56,78},当折半查找56时,经过( )次比较后查找成功。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》模拟题(开卷)一、单项选择题1.分析下列算法suanfa1(n):void suanfa1(int n){ int i,j,x=1;for(i=0;i<n;i++)for(j=0;j<n;j++)x=x*2;printf("%d",x)}其中语句"x=x*2;"的执行次数是( D )。
A.(n*2)2B.(n-1)2C.(n+1)2D.n22.折半查找有序表(16,20,30,35,40,46,60,80),若查找元素80,需依次与表元素( D )进行比较。
A.35,46,80B.40,60C.40,60,80D.35,46,60,803.对长度为10的表作选择(简单选择)排序,共需比较( A )次关键字。
A.45B.90C.10D.1104.下列算法suanfa2(n)的时间复杂度为( A )。
int suanfa1(int n){ int i,x=0;for (i=0;i<5;i++)for (j=1;j<=n;j++)x+=2;return x;}A.O(n)B.O(n5)C.O(5n)D.O(n2)5.线性表在( B )时, 宜用顺序表作存储结构。
A.经常作插入、删除B.经常随机存取C.无足够连续存储空间D.经常作动态查找6.设广义表LS=((a,b),c,(d,e)),执行操作GetTail(GetHead(LS))后的结果是( A )。
A.(b)B.bC.(c,(d,e))D.(a,b)7.深度为k的满二叉树有( C )个叶子。
A.k2-1B.2K-1-1C.2K-1D.k28.有16个顶点的无向图最多可能有( D )个连通分量。
A.32B.8C.256D.169. ( C )是'Hua**Zhong**Da'的子串。
A.HuaB.zhongC.'*Da'D.'HuaZhongDa'10.字符串的长度指的是串中( B )的个数。
A.不同字符B.字符C.字母D.字母和数字二、多项选择题1.设哈希(Hash)函数为H(k)=k MOD 7,其中k是关键字,MOD为取模(求余)运算,下列关键字( ACD )是同义词。
A.29,22,15B.1,2,3,4C.23,16,9D.7,14,492.一个算法具有( AC )等特点。
A.可行性B.健壮性C.确定性D.至少有一个输入量3.对单链表可以进行( BCD )的操作A.折半查找B.顺序查找C.删除结点D.插入结点4.若依次进栈的元素为a,b,c,d,可得到出栈的元素序列( ACD )。
A.a,b,c,dB.c,a,b,dC.b,c,d,aD.d,c,b,a三、填空题1.有向图的存储结构有___邻接表、逆邻接表、十字链表__等表示法。
2.若7行6列的数组a以列序为主序顺序存储,基地址为1024,每个元素占2个存储单元,则第3行第5列的元素(假定无第0行第0列)的存储地址是_1084_。
3.折半查找有序表(4,6,7,8,9,10,12,20,24,37,77,110),若查找值为9的元素,它将依次与表中元素___10,7,8,9_比较大小;若查找值为80的元素,它将依次与表中元素___10,24,77,110__比较大小。
4._____树中各结点的层的最大值___ 称为树的深度。
5._______线性表中元素的数目______称为线性表的长度。
6.____限定在表头作删除,在表尾作插入_____的线性表称为队列。
7.设n个元素的线性表顺序存储,若在它的第i个(1≤i≤n)元素之后插入一个新元素,共需移动____ n-i ___个元素。
8.构造Hash函数的方法有直接定址法、随机数法、_数字分析法、除留余数法、平方取中法、折叠法__等。
9.对n个记录的表进行简单选择排序,共计需要进行__ n(n-1)/2_次比较关键字,在最坏情况下,共计交换___ n-1___对记录。
10.字符串A中_连续字符组成子序列_称为串A的子串,_仅由空格字符组成的字符串称为空格串。
11.深度为k(k>0)的满二叉树共有_____2k-1-1__个非叶子。
12.在有向图G中,以顶点i为__弧尾的弧_的数目称为i的出度。
13..有n(n>0)个结点的完全二叉树的深度为⎡log2(n+1)⎤或⎣log2n+1⎦或⎣log2n⎦+1。
四、画图题1.试画出下列稀疏矩阵以行序为主序的三元组表。
稀疏矩阵参考答案:1.行序为主序的三元组表。
12342.下列树的双亲表示法: 参考答案:2.下列树的双亲表示法:3.试画出下列有向图G的逆邻接表。
有向图G参考答案:3.有向图的逆邻接表:4.二叉树T的顺序存储结构:参考答案:4.二叉树T的顺序存储结构:5.已知二叉树的前序遍历序列和中序遍历序列分别是:B,A,C,D,E,F和B,D,C,E,A,F试画出该二叉树。
参考答案:5.前序遍历序列和中序遍历序列分别是:B,A,C,D,E,F和B,D,C,E,A,F, 对应的二叉树如下:五、求解下列问题1.依次输入元素10,6,8,3,7,42,25,30,27,60, 试生成一棵二叉排序树,(1)画出生成之后的二叉排序树;(2)对该二叉排序树作中序、逆中序遍历,写出遍历序列,(3)假定每个元素的查找概率相等,试计算查找成功时平均查找长度。
参考答案:1.依次输入元素10,6,8,3,7,42,25,30,27,60, 试生成一棵二叉排序树, (1)生成的二叉排序树是:(2)中序遍历序列: 3,6,7,8,10,25,27,30,42,60逆中序遍历序列: 60,42,30,27,25,10,8,7,6,3(3)查找成功时平均查找长度:ASL=(1+2+2+3+3+3+3+4+4+5)/10=3.02.试按表(30,11,18,4,55,19,15,70,58)中元素的排列次序,将所有元素插入一棵初始为空的二叉排序树中,使之仍是一棵二叉排序树。
(1)画出插入完成之后的二叉排序树;(2)假设每个元素的查找概率相等,计算该树的平均查找长度ASL。
参考答案: 2.解:(1)构造二叉排序树:(2)平均查找长度: ASL=(1+2+2+3+3+3+4+4+4)/9=26/9≈2.93.试对下列网,(1)从顶点A出发,求(画)出一棵宽度优先生成树;(2)从顶点D出发,用Prim(普里姆)算法求出一棵最小生成树,写出求解过程。
参考答案:3.(1)从顶点A出发,宽度优先生成树之一;•(1)从顶点D出发,用Prim(普里姆)算法求出最小生成树之一:(2)六、设计题1.设单链表的结点为(data,next),其中data为整型, next为指针型,试用C语言类型定义分别写出结点类型和指针类型的定义。
参考答案:1.设单链表的结点为(data,next),其中data为整型, next为指针型,试用C语言类型定义分别写出结点类型和指针类型的定义。
typedef struct node{ int data;struct node *mext;}node,*linklist;七、简答题1.二叉树有哪几种基本形态? 试举例说明。
参考答案:1.答:二叉树有5种基本形态,举例如下:其中:B1:为空二叉树;B2:有根结点,左右子树均为空二叉树;B3:有根结点,左子树为非空二叉树,右子树为空二叉树;B4:有根结点,左子树为空二叉树,右子树为非空二叉树;B5:有根结点,左右子树均为非空二叉树。
2.线性表的顺序存储结构和链式存储结构各有哪些优点和缺点?参考答案:2.答:对于顺序存储结构:(1)优点:是一种随机存取结构,存取任何元素的时间是一个常数,速度快;结构简单,逻辑上相邻的元素在物理上也是相邻的;不使用指针,节省存储空间。
(2)缺点:插入和删除元素,平均需要移动约半个表的元素,消耗大量时间;需要提供一个连续的存储空间;插入元素可能发生“溢出”;表尾之后的自由存储空间不能被其它表的数据占用(共享)。
对于链式存储结构:(1)优点:插入和删除元素,不必移动元素,只需修改相关结点的指针;不需要一个连续的存储空间。
(2)缺点:不是随机存取结构,查找元素的时间与元素在表中位置有关,不是一个常数;使用指针,指针需占用一定的存储空间;系统需提供动态存储管理功能。
八、算法说明:输入一列整数,以0为结束标志,生成带头结点的递增有序单链表。
结点类型定义和算法:struct Lnode{ int data;struct Lnode *next;};struct Lnode *creat( ){ struct Lnode *head,*f,*q,*p;int e;head=(struct Lnode *)malloc(struct Lnode);head->next=NULL;do{ f=________________________________;scanf("%d",&e);f->data=e;q=head;p=_______________;while (p && e>p->data){ q=________; p=__________;}f->next=____; q->next=_____;}while(e);return head;}参考答案:八、算法填空struct Lnode{ int data;struct Lnode *next;};struct Lnode *creat( ){ struct Lnode *head,*f,*q,*p;int e;head=(struct Lnode *)malloc(struct Lnode);head->next=NULL;do{ f=(struct Lnode *)malloc(structLnode);scanf("%d",&e);f->data=e;q=head;p=p->next;while(p && e>p->data){ q=p; p=p->next;} (* 或 q=q->next; p=q->next;*) f->next=p; q->next=f;}while(e);return head;}。