文档库 最新最全的文档下载
当前位置:文档库 › 数据结构(C语言版)第三版__清华大学出版社_习题参考答案

数据结构(C语言版)第三版__清华大学出版社_习题参考答案

数据结构(C语言版)第三版__清华大学出版社_习题参考答案
数据结构(C语言版)第三版__清华大学出版社_习题参考答案

附录习题参考答案

习题1参考答案

1.1.选择题

(1). A. (2). A. (3). A. (4). B.,C. (5). A. (6). A. (7). C. (8). A. (9). B. (10.)

A.

1.2.填空题

(1). 数据关系

(2). 逻辑结构物理结构

(3). 线性数据结构树型结构图结构

(4). 顺序存储链式存储索引存储散列表(Hash)存储

(5). 变量的取值范围操作的类别

(6). 数据元素间的逻辑关系数据元素存储方式或者数据元素的物理关系

(7). 关系网状结构树结构

(8). 空间复杂度和时间复杂度

(9). 空间时间

(10). Ο(n)

1.3 名词解释如下:

数据:数据是信息的载体,是计算机程序加工和处理的对象,包括数值数据和非数值数据。数据项:数据项指不可分割的、具有独立意义的最小数据单位,数据项有时也称为字段或域。数据元素:数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理,一个数据元素可由若干个数据项组成。

数据逻辑结构:数据的逻辑结构就是指数据元素间的关系。

数据存储结构:数据的物理结构表示数据元素的存储方式或者数据元素的物理关系。

数据类型:是指变量的取值范围和所能够进行的操作的总和。

算法:是对特定问题求解步骤的一种描述,是指令的有限序列。

1.4 语句的时间复杂度为:

(1) Ο(n2)

(2) Ο(n2)

(3) Ο(n2)

(4) Ο(n-1)

(5) Ο(n3)

1.5 参考程序:

main()

{

int X,Y,Z;

scanf(“%d, %d, %d”,&X,&Y,Z);

if (X>=Y)

if(X>=Z)

if (Y>=Z)

{ printf(“%d, %d, %d”,X,Y,Z);}

else

{ printf(“%d, %d, %d”,X,Z,Y);}

else

{ printf(“%d, %d, %d”,Z,X,Y);}

else

if(Z>=X)

if (Y>=Z)

{ printf(“%d, %d, %d”,Y,Z,X);}

else

{ printf(“%d, %d, %d”,Z,Y,X);}

else

{ printf(“%d, %d, %d”,Y,X,Z);}

}

1.6 参考程序:

main()

{

int i,n;

float x,a[],p;

printf(“\nn=”);scanf(“%f”,&n);

printf(“\nx=”);scanf(“%f”,&x);

for(i=0;i<=n;i++)

scanf(“%f ”,&a[i]);

p=a[0];

for(i=1;i<=n;i++)

{ p=p+a[i]*x;

x=x*x;}

printf(“%f”,p)’

}

习题2参考答案

2.1选择题

(1). C. (2). B. (3). B. (4). B. 5. D. 6. B. 7. B. 8. A. 9. A. 10. D.

2.2.填空题

(1). 有限序列

(2). 顺序存储和链式存储

(3). O(n) O(n)

(4). n-i+1 n-i

(5). 链式

(6). 数据指针

(7). 前驱后继

(8). Ο(1) Ο(n)

(9). s->next=p->next; p->next=s ;

(10). s->next

2.3. 解题思路:将顺序表A中的元素输入数组a,若数组a中元素个数为n,将下标为0,

1,2,…,(n-1)/2的元素依次与下标为n,n-1,…, (n-1)/2的元素交换,输出数组a的元素。

参考程序如下:

main()

{

int i,n;

float t,a[];

printf(“\nn=”);scanf(“%f”,&n);

for(i=0;i<=n-1;i++)

scanf(“%f ”,&a[i]);

for(i=0;i<=(n-1)/2;i++)

{ t=a[i]; a[i] =a[n-1-i]; a[n-1-i]=t;}

for(i=0;i<=n-1;i++)

printf(“%f”,a[i]);

}

2.4 算法与程序:

main()

{

int i,n;

float t,a[];

printf(“\nn=”);scanf(“%f”,&n);

for(i=0;i

scanf(“%f ”,&a[i]);

for(i=1;i

if(a[i]>a[0])

{ t=a[i]; a[i] =a[0]; a[0]=t;}

printf(“%f”,a[0]);

for(i=2;i

if(a[i]>a[1])

{ t=a[i]; a[i] =a[1]; a[1]=t;}

printf(“%f”,a[0]);

}

2.5 算法与程序:

main()

{

int i,j,k,n;

float x,t,a[];

printf(“\nx=”);scanf(“%f”,&x);

printf(“\nn=”);scanf(“%f”,&n);

for(i=0;i

scanf(“%f ”,&a[i]); // 输入线性表中的元素

for (i=0; i

k=i;

for (j=i+1; j

if (k<>j) {t=a[i];a[i]=a[k];a[k]=t;}

}

for(i=0;i

if(a[i]>x) break;

for(k=n-1;k>=i;i--) // 移动线性表中元素,然后插入元素x

a[k+1]=a[k];

a[i]=x;

for(i=0;i<=n;i++) // 依次输出线性表中的元素

printf(“%f”,a[i]);

}

2.6 算法思路:依次扫描A和B的元素,比较A、B当前的元素的值,将较小值的元素赋给C,如此直到一个线性表扫描完毕,最后将未扫描完顺序表中的余下部分赋给C即可。C的容量要能够容纳A、B两个线性表相加的长度。

有序表的合并算法:

void merge (SeqList A, SeqList B, SeqList *C)

{ int i,j,k;

i=0;j=0;k=0;

while ( i<=https://www.wendangku.net/doc/f54327854.html,st && j<=https://www.wendangku.net/doc/f54327854.html,st )

if (A.data[i]<=B.data[j])

C->data[k++]=A.data[i++];

else

C->data[k++]=B.data[j++];

while (i<=https://www.wendangku.net/doc/f54327854.html,st )

C->data[k++]= A.data[i++];

while (j<=https://www.wendangku.net/doc/f54327854.html,st )

C->data[k++]=B.data[j++];

C->last=k-1;

}

2.7 算法思路:依次将A中的元素和B的元素比较,将值相等的元素赋给C,如此直到线性

表扫描完毕,线性表C就是所求递增有序线性表。

算法:

void merge (SeqList A, SeqList B, SeqList *C)

{ int i,j,k;

i=0;j=0;k=0;

while ( i<=https://www.wendangku.net/doc/f54327854.html,st)

while(j<=https://www.wendangku.net/doc/f54327854.html,st )

if (A.data[i]=B.data[j])

C->data[k++]=A.data[i++];

C->last=k-1;

}

习题3参考答案

3.1.选择题

(1). D (2). C (3). D (4). C (5). B (6). C (7). C (8). C (9). B (10).AB (11). D (12). B (13). D (14). C (15). C (16). D(17). D (18). C (19). C (20). C 3.2.填空题

(1)FILO, FIFO

(2)-1, 3 4 X * + 2 Y * 3 / -

(3)stack.top, stack.s[stack.top]=x

(4)p>llink->rlink=p->rlink, p->rlink->llink=p->rlink

(5)(R-F+M)%M

(6)top1+1=top2

(7)F==R

(8)front==rear

(9)front==(rear+1)%n

(10) N-1

3.3 答:一般线性表使用数组来表示的

线性表一般有插入、删除、读取等对于任意元素的操作

而栈只是一种特殊的线性表

栈只能在线性表的一端插入(称为入栈,push)或者读取栈顶元素或者称为“弹出、出栈”(pop)。

3.4 答:相同点:栈和队列都是特殊的线性表,只在端点处进行插入,删除操作。

不同点:栈只在一端(栈顶)进行插入,删除操作;队列在一端(top)删除,一端(rear)插入。

3.5 答:可能序列有14种:ABCD; ACBD; ACDB; ABDC; ADCB; BACD; BADC; BCAD; BCDA; BDCA; CBAD; CBDA; CDBA; DCBA。

3.6 答:不能得到4,3,5,6,1,2,最先出栈的是4,则按321的方式出,不可能得到1在2前的序列,可以得到1,3,5,4,2,6,按如下方式进行push(1), pop(), push(2), push(3), pop(), push(4), push(5), pop(), pop(), pop(), push(6), pop()。

3.7 答:stack

3.8 非递归:

int vonvert (int no,int a[]) //将十进制数转换为2进制存放在a[],并返回位数{

int r;

SeStack s,*p;

P=&s;

Init_stack(p);

while(no)

{

push(p,no%2);

no/=10;

}

r=0;

while(!empty_stack(p))

{

pop(p,a+r);

r++;

}

return r;

}

递归算法:

void convert(int no)

{

if(no/2>0)

{

Convert(no/2);

Printf(“%d”,no%2);

}

else

printf(“%d”,no);

}

3.9 参考程序:

void view(SeStack s)

{

SeStack *p; //假设栈元素为字符型

char c;

p=&s;

while(!empty_stack(p))

{

c=pop(p);

printf(“%c”,c);

}

printf(”\n”);

}

3.10 答:char

3.11 参考程序:

void out(linkqueue q)

{

int e;

while(q.rear !=q.front )

{

dequeue(q,e);

print(e); //打印

}

}

习题4参考答案

4.1 选择题:

(1). A (2). D (3). C (4). C (5). B (6). B (7). D (8). A (9). B (10). D 4.2 填空题:

(1)串长相等且对应位置字符相等

(2)不含任何元素的串,0

(3)所含字符均是空格,所含空格数

(4)10

(5)“hello boy”

(6)13

(7)1066

(8)模式匹配

(9)串中所含不同字符的个数

(10) 36

4.3 StrLength (s)=14, StrLength (t)=4, SubStr( s,8,7)=” STUDENT”, SubStr(t,2,1)=”O”,

StrIndex(s,“A”)=3, StrIndex (s,t)=0, StrRep(s,“STUDENT”,q)=” I AM A WORKER”, 4.4 StrRep(s,”Y”,”+”);StrRep(s,”+*”,”*Y”);

4.5 空串:不含任何字符;空格串:所含字符都是空格

串变量和串常量:串常量在程序的执行过程中只能引用不能改变;串变量的值在程序执行过程中是可以改变和重新赋值的

主串与子串:子串是主串的一个子集

串变量的名字与串变量的值:串变量的名字表示串值的标识符

4.6

int EQUAl(S,T)

{

char *p,*q;

p=&S;

q=&T;

while(*p&&*q)

{

if(*p!=*q)

return *p-*q;

p++;

q++;

}

return *p-*q;

}

4.7

(1)6*8*6=288

(2)1000+47*6=1282

(3)1000+(8+4)*8=1096

(4)1000+(6*7+4)*8=1368

4.8

习题5参考答案

5.1 选择

(1)C(2)B(3)C(4)B(5)C(6)D(7)C(8)C(9)B(10)C (11)B(12)C(13)C(14)C(15)C(16)B

5.2 填空

(1)1

(2)1036;1040

(3)2i

(4) 1 ; n ; n-1 ; 2

(5)2k-1;2k-1

(6)ACDBGJKIHFE

(7)p!=NULL

(8)Huffman树

(9)其第一个孩子; 下一个兄弟

(10)先序遍历;中序遍历

5.3

叶子结点:C、F、G、L、I、M、K;

非终端结点:A、B、D、E、J;

各结点的度:

结点: A B C D E F G L I J K M 度: 4 3 0 1 2 0 0 0 0 1 0 0

树深:4

5.4

无序树形态如下:

二叉树形态如下:

5.5

二叉链表如下:

三叉链表如下:

5.6

先序遍历序列:ABDEHICFJG

中序遍历序列:DBHEIAFJCG

后序遍历序列:DHIEBJFGCA

5.7

(1) 先序序列和中序序列相同:空树或缺左子树的单支树;

(2) 后序序列和中序序列相同:空树或缺右子树的单支树;

(3) 先序序列和后序序列相同:空树或只有根结点的二叉树。

5.8

这棵二叉树为:

严蔚敏版数据结构课后习题答案-完整版

第1章绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据

类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解: ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C)

数据结构C语言版期末考试试题(有答案)

“数据结构”期末考试试题 一、单选题(每小题2分,共12分) 1.在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( )。 A. HL=ps p一>next=HL B. p一>next=HL;HL=p3 C. p一>next=Hl;p=HL; D. p一>next=HL一>next;HL一>next=p; 2.n个顶点的强连通图中至少含有( )。 A.n—l条有向边 B.n条有向边 C.n(n—1)/2条有向边 D.n(n一1)条有向边 3.从一棵二叉搜索树中查找一个元素时,其时间复杂度大致为( )。 A.O(1) B.O(n) C.O(1Ogzn) D.O(n2) 4.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( )。 A.24 B.48 C. 72 D. 53 5.当一个作为实际传递的对象占用的存储空间较大并可能需要修改时,应最好把它说明为( )参数,以节省参数值的传输时间和存储参数的空间。 A.整形 B.引用型 C.指针型 D.常值引用型· 6.向一个长度为n的顺序表中插人一个新元素的平均时间复杂度为( )。 A.O(n) B.O(1) C.O(n2) D.O(10g2n) 二、填空题(每空1分,共28分) 1.数据的存储结构被分为——、——、——和——四种。 2.在广义表的存储结构中,单元素结点与表元素结点有一个域对应不同,各自分别为——域和——域。 3.——中缀表达式 3十x*(2.4/5—6)所对应的后缀表达式为————。 4.在一棵高度为h的3叉树中,最多含有——结点。 5.假定一棵二叉树的结点数为18,则它的最小深度为——,最大深度为——· 6.在一棵二叉搜索树中,每个分支结点的左子树上所有结点的值一定——该结点的值,右子树上所有结点的值一定——该结点的值。 7.当向一个小根堆插入一个具有最小值的元素时,该元素需要逐层——调整,直到被调整到——位置为止。 8.表示图的三种存储结构为——、——和———。 9.对用邻接矩阵表示的具有n个顶点和e条边的图进行任一种遍历时,其时间复杂度为——,对用邻接表表示的图进行任一种遍历时,其时间复杂度为——。 10.从有序表(12,18,30,43,56,78,82,95)中依次二分查找43和56元素时,其查找长度分别为——和——· 11.假定对长度n=144的线性表进行索引顺序查找,并假定每个子表的长度均

经典数据结构面试题(含答案)

栈和队列的共同特点是__________________________ .栈通常采用的两种存储结构是______________________ .用链表表示线性表的优点是_______________________ 8.在单链表中,增加头结点的目的是___________________ 9.循环链表的主要优点是________________________- 12.线性表的顺序存储结构和线性表的链式存储结构分别是 __________________________ 13.树是结点的集合,它的根结点数目是_____________________ 14.在深度为5的满二叉树中,叶子结点的个数为_______________ 15.具有3个结点的二叉树有(_____________________ 16.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为____________________ 17.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是 ____________________________ 18.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为______________________ 19.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是_______________________ 20.数据库保护分为:安全性控制、完整性控制、并发性控制和数据的恢复。 在计算机中,算法是指_______________________ 算法一般都可以用哪几种控制结构组合而成_____________________ .算法的时间复杂度是指______________________ 5. 算法的空间复杂度是指__________________________ 6. 算法分析的目的是__________________________

数据结构习题及参考答案

习题1 一、单项选择题 A1.数据结构是指()。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 C2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。 A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构 D3.树形结构是数据元素之间存在一种()。 A.一对一关系 B.多对多关系 C.多对一关系 D.一对多关系 B4.设语句x++的时间是单位时间,则以下语句的时间复杂度为()。 for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++; A.O(1) B.O(2n) C.O(n) D.O(3n) CA5.算法分析的目的是(1),算法分析的两个主要方面是(2)。 (1) 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.1946 B.1953 C.1964 D.1968 9.数据结构只是研究数据的逻辑结构和物理结构,这种观点()。 A.正确 B.错误 C.前半句对,后半句错 D.前半句错,后半句对

数据结构模拟卷(含答案)经典习题培训讲学

数据结构模拟卷(含答案)经典习题

练习题 一、单项选择题 1. 若将数据结构形式定义为二元组(K,R),其中K是数据元素的有限集合,则R是K上( ) A. 操作的有限集合 B. 映象的有限集合 C. 类型的有限集合 D. 关系的有限集合 2. 在长度为n的顺序表中删除第i个元素(1≤i≤n)时,元素移动的次数为( ) A. n-i+1 B. i C. i+1 D. n-i 3. 若不带头结点的单链表的指针为head,则该链表为空的判定条件是( ) A. head==NULL B. head->next==NULL C. head!=NULL D. head->next==head 4. 引起循环队列队头位置发生变化的操作是( ) A. 出队 B. 入队 C. 取队头元素 D. 取队尾元素 5. 若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则不.可能出现的出栈序列是( ) A. 2,4,3,1,5,6 B. 3,2,4,1,6,5 C. 4,3,2,1,5,6 D. 2,3,5,1,6,4

6. 字符串通常采用的两种存储方式是( ) A. 散列存储和索引存储 B. 索引存储和链式存储 C. 顺序存储和链式存储 D. 散列存储和顺序存储 7. 数据结构是() A.一种数据类型 B.数据的存储结构 C.一组性质相同的数据元素的集合 D.相互之间存在一种或多种特定关系的数据元素的集合 8. 算法分析的目的是() A.辨别数据结构的合理性 B.评价算法的效率 C.研究算法中输入与输出的关系 D.鉴别算法的可读性 9. 在线性表的下列运算中,不.改变数据元素之间结构关系的运算是 () A.插入B.删除 C.排序D.定位10. 下列图示的顺序存储结构表示的二叉树是( )

数据结构复习题集答案(c语言版严蔚敏)

人生难得几回搏,此时不搏更待何时? 第1章绪论 1.1 简述下列术语:数据 数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型 解:数据是对客观事物的符号表示 在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称 数据元素是数据的基本单位 在计算机程序常作为一个整体进行考虑和处理 数据对象是性质相同的数据元素的集合 是数据的一个子集 数据结构是相互之间存在一种或多种特定关系的数据元素的集合 存储结构是数据结构在计算机中的表示 数据类型是一个值的集合和定义在这个值集上的一组操作的总称 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作 是对一般数据类型的扩展 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别 解:抽象数据类型包含一般数据类型的概念 但含义比一般数据类型更广、更抽象 一般数据类型由具体语言系统部定义 直接提供给编程者定义用户数据 因此称它们为预定义数据类型 抽象数据类型通常由编程者定义 包括定义它所使用的数据和在这些数据上所进行的操作 在定义抽象数据类型中的数据部分和操作部分时 要求只定义到数据的逻辑结构和操作说明 不考虑数据的存储结构和操作的具体实现 这样抽象层次更高 更能为其他用户提供良好的使用接口 1.3 设有数据结构(D R) 其中

试按图论中图的画法惯例画出其逻辑结构图 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数) 解: ADT Complex{ 数据对象:D={r i|r i为实数} 数据关系:R={} 基本操作: InitComplex(&C re im) 操作结果:构造一个复数C 其实部和虚部分别为re和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C k &e) 操作结果:用e返回复数C的第k元的值 Put(&C k e) 操作结果:改变复数C的第k元的值为e IsAscending(C) 操作结果:如果复数C的两个元素按升序排列 则返回1 否则返回0 IsDescending(C) 操作结果:如果复数C的两个元素按降序排列 则返回1 否则返回0 Max(C &e) 操作结果:用e返回复数C的两个元素中值较大的一个 Min(C &e) 操作结果:用e返回复数C的两个元素中值较小的一个

数据结构 习题答案

第1章概论 1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的①C、数据信息在计算机中的②A以及一组相关的运算等的课程。 ①A.操作对象B.计算方法C.逻辑结构D.数据映象 ②A.存储结构B.关系C.运算D.算法 2. 计算机算法指的是① C ,它必具备输入、输出和② B 等五个特性。 ① A. 计算方法 B. 排序方法 C. 解决问题的有限运算序列 D. 调度方法 ② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和安全性 3.下面程序段的时间复杂度是D for(i=0;inext = p; p->next = s; B. s->next = p->next; p->next = s; C. s->next = p->next; p = s; D. p->next = s; s->next = p; 2.非空的不带头结点的循环单链表,首结点由first指向,尾结点由p指向,则满足: C A. p->next == NULL; B. p == NULL; C. p->next == first; D. p == first; 3.在一个长度为n的顺序存储的线性表中,删除第i个元素(0≤i≤n-1)时,需要移动多少个元素?C A. n-i B. n-i+1 C. n-i-1 D. I 4.在带头结点指针head的单链表中,链表为空的判断条件是?B A. head == NULL B. head->next == NULL C. head != NULL D. head->next == head; 5.在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是B A. p=p->next; B. p->next=p->next->next; C. p->next=p; D. p=p->next->next;

数据结构c语言版期末考试复习试题

《数据结构与算法》复习题 一、选择题。 1在数据结构中,从逻辑上可以把数据结构分为 C 。 A ?动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 2?数据结构在计算机内存中的表示是指_A_。 A .数据的存储结构B.数据结构 C .数据的逻辑结构 D .数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的A结构。 A .逻辑 B .存储C.逻辑和存储 D .物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储_C A .数据的处理方法 B .数据元素的类型 C.数据元素之间的关系 D .数据的存储方法 5.在决定选取何种存储结构时,一般不考虑A A .各结点的值如何C.对数据有哪些运算 B .结点个数的多少 D .所用的编程语言实现这种结构是否方 6.以下说法正确的是D A .数据项是数据的基本单位 B .数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D .一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。 (1) A .找出数据结构的合理性B.研究算法中的输入和输出的关系 C .分析算法的效率以求改进C.分析算法的易读性和文档性 (2) A .空间复杂度和时间复杂度B.正确性和简明性 &下面程序段的时间复杂度是0( n2) s =0; for( I =0; i

数据结构模拟卷(含答案)经典习题

练习题 一、单项选择题 1. 若将数据结构形式定义为二元组(K,R),其中K是数据元素的有限集合,则R是K上( ) A. 操作的有限集合 B. 映象的有限集合 C. 类型的有限集合 D. 关系的有限集合 2. 在长度为n的顺序表中删除第i个元素(1≤i≤n)时,元素移动的次数为( ) A. n-i+1 B. i C. i+1 D. n-i 3. 若不带头结点的单链表的指针为head,则该链表为空的判定条件是( ) A. head==NULL B. head->next==NULL C. head!=NULL D. head->next==head 4. 引起循环队列队头位置发生变化的操作是( ) A. 出队 B. 入队 C. 取队头元素 D. 取队尾元素 5. 若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则不.可能出现的出栈序列是( ) A. 2,4,3,1,5,6 B. 3,2,4,1,6,5 C. 4,3,2,1,5,6 D. 2,3,5,1,6,4 1

6. 字符串通常采用的两种存储方式是( ) A. 散列存储和索引存储 B. 索引存储和链式存储 C. 顺序存储和链式存储 D. 散列存储和顺序存储 7. 数据结构是() A.一种数据类型 B.数据的存储结构 C.一组性质相同的数据元素的集合 D.相互之间存在一种或多种特定关系的数据元素的集合 8. 算法分析的目的是() A.辨别数据结构的合理性 B.评价算法的效率 C.研究算法中输入与输出的关系 D.鉴别算法的可读性 9. 在线性表的下列运算中,不.改变数据元素之间结构关系的运算是 () A.插入B.删除 C.排序D.定位 10. 下列图示的顺序存储结构表示的二叉树是( ) 2

数据结构(C语言版)复习题概论

一、单项选择题: 1、树形结构不具备这样的特点:() A. 每个节点可能有多个后继(子节点) B. 每个节点可能有多个前驱(父节点) C. 可能有多个内节点(非终端结点) D. 可能有多个叶子节点(终端节点) 2、二叉树与度数为2的树相同之处包括()。 A. 每个节点都有1个或2个子节点 B. 至少有一个根节点 C. 至少有一个度数为2的节点 D. 每个节点至多只有一个父节点 3、一棵完全二叉树有999 个结点,它的深度为()。 A.9 B.10 C.11 D.12 4、在一个单链表中,若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; D. p->next=s;s->next=p; 5、对于一棵具有n个结点、度为5的树来说,() A. 树的高度至多是n-3 B. 树的高度至多是n-4 C. 树的高度至多是n D. 树的高度至多是n-5 6、在顺序队列中,元素的排列顺序()。 A. 由元素插入队列的先后顺序决定 B. 与元素值的大小有关 C. 与队首指针和队尾指针的取值有关 D. 与数组大小有关 7、串是一种特殊的线性表,其特殊性体现在()。 A.可以顺序存储 B.数据元素是一个字符 C.可以链式存储 D.数据元素可以是多个字符若 8、顺序循环队列中(数组的大小为 6),队头指示 front 和队尾指示 rear 的值分别为 3 和 0,当从队列中删除1个元素,再插入2 个元素后,front和 rear的值分别为()。 A.5 和1 B.2和4 C.1和5 D.4 和2 9、一棵完全二叉树上有1001 个结点,其中叶子结点的个数为()。 A.250 B.500 C.254 D.501 10、已知一个有向图如下图所示,则从顶点a出发进行深度优先遍历,不可能得到的DFS序 列为()。 A.adbefc B.adcefb C.adcebf D.adefbc

数据结构习题及答案——严蔚敏

第一章绪论 一、选择题 1.组成数据的基本单位是() (A)数据项(B)数据类型(C)数据元素(D)数据变量 2.数据结构是研究数据的()以及它们之间的相互关系。 (A)理想结构,物理结构(B)理想结构,抽象结构 (C)物理结构,逻辑结构(D)抽象结构,逻辑结构 3.在数据结构中,从逻辑上可以把数据结构分成() (A)动态结构和静态结构(B)紧凑结构和非紧凑结构 (C)线性结构和非线性结构(D)内部结构和外部结构 4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。 ① (A)数据元素(B)计算方法(C)逻辑存储(D)数据映像 ② (A)结构(B)关系(C)运算(D)算法 5.算法分析的目的是()。 (A)找出数据结构的合理性(B)研究算法中的输入和输出的关系 (C)分析算法的效率以求改进(D)分析算法的易懂性和文档性 6.计算机算法指的是(①),它必须具备输入、输出和(②)等5 个特性。 ① (A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法

② (A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性 (C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性 二、判断题 1.数据的机内表示称为数据的存储结构。() 2.算法就是程序。() 3.数据元素是数据的最小单位。() 4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。() 5.算法的时间复杂度取决于问题的规模和待处理数据的初态。() 三、填空题 1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____。 2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点。 3.在树形结构中,树根结点没有_______结点,其余每个结点有且只 有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________。 4.在图形结构中,每个结点的前驱结点数和后续结点数可以 _________。 5.线性结构中元素之间存在________关系,树形结构中元素之间存 在______关系,图形结构中元素之间存在_______关系。 6.算法的五个重要特性是_______、_______、______、_______、

数据结构(c语言版)期末考试复习试题

《数据结构与算法》(c语言版)期末考复习题 一、选择题。 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑 A 。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 D 。 A.数据项是数据的基本单位

B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。(1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性(2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2) 。 s =0; for( I =0; i

经典数据结构上机题_答案解析

数据结构上机实验题目 实验一线性表的顺序存储结构 实验学时 2学时 背景知识:顺序表的插入、删除及应用。 目的要求: 1.掌握顺序存储结构的特点。 2.掌握顺序存储结构的常见算法。 实验容 1.输入一组整型元素序列,建立顺序表。 2.实现该顺序表的遍历。 3.在该顺序表中进行顺序查找某一元素,查找成功返回1,否则返回0。4.判断该顺序表中元素是否对称,对称返回1,否则返回0。 5.实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。 6.输入整型元素序列利用有序表插入算法建立一个有序表。 7.利用算法6建立两个非递减有序表并把它们合并成一个非递减有序表。 8. 利用该顺序结构实现循环队列的入队、出队操作。 8.编写一个主函数,调试上述算法。 #include #include

#define OVERFLOW 0 #define MAXSIZE 100 typedef int ElemType; typedef struct list {ElemType elem[MAXSIZE]; int length; }Sqlist; void Creatlist(Sqlist &L) {int i; printf("请输入顺序表的长度:"); //输入一组整型元素序列,建立一个顺序表。 scanf("%d",&L.length); for(i=0;i

数据结构习题与答案

第 1 章绪论 课后习题讲解 1. 填空 ⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 【解答】数据元素 ⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。 【解答】数据项,数据元素 【分析】数据结构指的是数据元素以及数据元素之间的关系。 ⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。 【解答】集合,线性结构,树结构,图结构 ⑷数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。 【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系 ⑸算法具有五个特性,分别是()、()、()、()、()。 【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性 ⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。 【解答】自然语言,程序设计语言,流程图,伪代码,伪代码 ⑺在一般情况下,一个算法的时间复杂度是()的函数。 【解答】问题规模 ⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。 【解答】Ο(1),Ο(nlog2n) 【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。 2. 选择题 ⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。 A 线性结构 B 非线性结构 C 存储位置 D 指针 【解答】C,D 【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

数据结构(C语言版)期末复习

数据结构(C语言版)期末复习汇总 第一章绪论 数据结构:是一门研究非数值计算程序设计中的操作对象,以及这些对象之间的关系和操作的学科。 数据结构分为:逻辑结构、物理结构、操作三部分 逻辑结构:集合、线性结构、树形结构、图(网)状结构 物理结构(存储结构):顺序存储结构、链式存储结构 算法:是为了解决某类问题而规定的一个有限长的操作序列。 算法五个特性:有穷性、确定性、可行性、输入、输出 评价算法优劣的基本标准(4个):正确性、可读性、健壮性、高效性及低存储量 语句频度的计算。 算法的时间复杂度: 常见有:O(1),O(n),O(n2),O(log2n),O(nlog2n),O(2n) 第二章线性表 线性表的定义和特点: 线性表:由n(n≥0)个数据特性相同的元素构成的有限序列。线性表中元素个数n(n≥0)定义为线性表的长度,n=0时称为空表。 非空线性表或线性结构,其特点: (1)存在唯一的一个被称作“第一个”的数据元素; (2)存在唯一的一个被称作“最有一个”的数据元素; (3)除第一个之外,结构中的每个数据元素均只有一个前驱; (4)除最后一个之外,结构中的每个数据元素均只有一个后继。 顺序表的插入:共计n个元素,在第i位插入,应移动(n-i+1)位元素。 顺序表的删除:共计n个元素,删除第i位,应移动(n-i)位元素。 线性表的两种存储方式:顺序存储、链式存储。 顺序存储 概念:以一组连续的存储空间存放线性表; 优点:逻辑相邻,物理相邻;可随机存取任一元素;存储空间使用紧凑; 缺点:插入、删除操作需要移动大量的元素;预先分配空间需按最大空间分配,利用不充分;表容量难以扩充; 操作:查找、插入、删除等 查找: ListSearch(SqlList L,ElemType x,int n) { int i; for (i=0;i

数据结构经典题目c语言代码

《数据结构》课程设计题目 (程序实现采用C语言) 题目1:猴子选王(学时:3) 一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 要求:m及n要求从键盘输入,存储方式采用向量及链表两种方式实现该问题求解。 //链表 #include #include // 链表节点 typedef struct _RingNode { int pos; struct _RingNode *next; }RingNode, *RingNodePtr; // 创建约瑟夫环,pHead:链表头指针,count:链表元素个数 void CreateRing(RingNodePtr pHead, int count) { RingNodePtr pCurr = NULL, pPrev = NULL; int i = 1; pPrev = pHead; while(--count > 0)

{ pCurr = (RingNodePtr)malloc(sizeof(RingNode)); i++; pCurr->pos = i; pPrev->next = pCurr; pPrev = pCurr; } pCurr->next = pHead; // 构成环状链表 } void KickFromRing(RingNodePtr pHead, int n) { RingNodePtr pCurr, pPrev; int i = 1; // 计数 pCurr = pPrev = pHead; while(pCurr != NULL) { if (i == n) { // 踢出环 printf("\n%d", pCurr->pos); // 显示出圈循序 pPrev->next = pCurr->next; free(pCurr); pCurr = pPrev->next; i = 1; } pPrev = pCurr;

数据结构C语言版(第2版)严蔚敏人民邮电出版社课后习题答案

数据结构(C语言版)(第2版) 课后习题答案 李冬梅 2015.3

目录 第1章绪论 (1) 第2章线性表 (5) 第3章栈和队列 (13) 第4章串、数组和广义表 (26) 第5章树和二叉树 (33) 第6章图 (43) 第7章查找 (54) 第8章排序 (65)

第1章绪论 1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。 答案: 数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。 数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。 数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。 数据对象:是性质相同的数据元素的集合,是数据的一个子集。例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。 逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。 存储结构:数据对象在计算机中的存储表示,也称为物理结构。 抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。 2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。 答案: 例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继。学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。 这些学生记录在计算机中的存储表示就是存储结构。如果用连续的存储单元(如用数组表示)来存放这些记录,则称为顺序存储结构;如果存储单元不连续,而是随机存放各个记录,然后用指针进行链接,则称为链式存储结构。 即相同的逻辑结构,可以对应不同的存储结构。 3.简述逻辑结构的四种基本关系并画出它们的关系图。

数据结构习题参考答案

第1章概论 1.数据、数据元素、数据结构、数据类型的含义分别是什么? 数据:对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并由计算机程序处理的符号的总称。 数据元素:数据的基本单位,在计算机程序中通常作为一个整体考虑。 数据结构:数据元素之间的关系+运算,是以数据为成员的结构,是带结构的数据元素的集合,数据元素之间存在着一种或多种特定的关系。 数据类型:数据类型是用来区分不同的数据;由于数据在存储时所需要的容量各不相同,不同的数据就必须要分配不同大小的内存空间来存储,所有就要将数据划分成不同的数据类型。数据类型包含取值范围和基本运算等概念。 2.什么是数据的逻辑结构?什么是数据的物理结构?数据的逻辑结构与物理结构的区别和联系是什么? 逻辑结构:数据的逻辑结构定义了数据结构中数据元素之间的相互逻辑关系。数据的逻辑结构包含下面两个方面的信息: ①数据元素的信息; ②各数据元素之间的关系。 物理结构:也叫储存结构,是指逻辑结构的存储表示,即数据的逻辑结构在计算机存储空间中的存放形式,包括结点的数据和结点间关系的存储表示。 数据的逻辑结构和存储结构是密不可分的,一个操作算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采与的存储结构。采用不同的存储结构,其数据处理的效率是不同的。因此,在进行数据处理时,针对不同问题,选择合理的逻辑结构和存储结构非常重要。 3.数据结构的主要操作包括哪些? 对于各种数据结构而言,他们在基本操作上是相似的,最常用的操作有: ●创建:建立一个数据结构; ●清除:清除一个数据结构; ●插入:在数据结构中增加新的结点; ●删除:把指定的结点从数据结构中删除; ●访问:对数据结构中的结点进行访问; ●更新:改变指定结点的值或改变指定的某些结点之间的关系; ●查找:在数据结构中查找满足一定条件的结点; ●排序:对数据结构中各个结点按指定数据项的值,以升序或降序重新排列。 4.什么是抽象数据类型?如何定义抽象数据类型? 抽象数据类型(Abstract Data Type 简称ADT)是指一个数学模型以及定义在此数学模型上的一组操作。ADT是与具体的物理存储无关的数据类型,因此,不论ADT的内部结构如何变化,只要其数据结构的特性不变,都不影响其外部使用。 对抽象数据类型的描述一般用(D,R,P)三元组表示,抽象数据类型的定义格式为: ADT<抽象数据类型名> { 数据对象D:<数据对象的定义> 数据关系R:<数据关系的定义> 基本操作P:<基本操作的定义>

数据结构经典例题

数据结构经典例题 1.设计一个算法将L拆分成两个带头节点的单链表L1和L2。 void split(LinkList *&L,LinkList *&L1,LinkList *&L2) { LinkList *p=L->next,*q,*r1; //p指向第1个数据节点 L1=L; //L1利用原来L的头节点 r1=L1; //r1始终指向L1的尾节点 L2=(LinkList *)malloc(sizeof(LinkList));//创建L2的头节点 L2->next=NULL; //置L2的指针域为NULL while (p!=NULL) { r1->next=p; //采用尾插法将*p(data值为ai)插入L1中 r1=p; p=p->next; //p移向下一个节点(data值为bi) q=p->next; //由于头插法修改p的next域,故用q保存*p的后继节点 p->next=L2->next; //采用头插法将*p插入L2中 L2->next=p; p=q; //p重新指向ai+1的节点 } r1->next=NULL; //尾节点next置空 } 2.查找链表中倒数第k个位置上的节点(k为正整数)。若查找成功,算法输出该节点的data域的值,并返回1;否则,只返回0。 typedef struct LNode {int data; struct LNode *link; } *LinkList; int Searchk(LinkList list,int k) { LinkList p,q; int count=0; p=q=list->link; while (p!=NULL) { if (countlink; p=p->link; } if (count

数据结构(c语言版)课后习题答案完整版

第1章绪论 5.选择题:CCBDCA 6.试分析下面各程序段的时间复杂度。 (1)O(1) (2)O(m*n) (3)O(n2) (4)O(log3n) (5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2) (6)O(n) 第2章线性表 1.选择题 babadbcabdcddac 2.算法设计题 (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; }

} (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

相关文档