数据结构实用教 程第二章课后习题答案.docVIP

  • 37
  • 0
  • 约4.74千字
  • 约 5页
  • 2017-06-02 发布于河南
  • 举报

数据结构实用教 程第二章课后习题答案.doc

数据结构实用教 程第二章课后习题答案

数据结构实用教程(C语言版) DJ友情提醒:兔崽子们别老是抄答案,抄了也多想想为什么这么做 2 线性表 2.1 回答下列概念:线性结构,线性表,顺序表,单链表,静态链表 线性结构:设Data_Structure =(D,S),r∈S,相对r,D中有且仅有一个开始结点和一个终端结点,其余的内部结点都有且仅有一个前趋和一个后继,则称Data_Structure是相对r的线性结构。 线性表:是具有相同属性的n(n≥0)个数据元素的有限序列。 顺序表:顺序表(Sequential List)是采用顺序存储结构的线性表。 单链表:每个结点只附加一个指向后继的指针域,这样的链表称为单链表 (Single Linked List) 静态链表:用数组实现的链表,指针就变换为数组的下标,结点即为数组中的下标变量,由于需要预先分配一个较大的数组空间,因此这种链表称之为静态链表。 2.2 比较顺序表和链表这两种线性表不同存储结构的特点。 1.逻辑关系的表示:顺序表隐含表示关系,链表显示表示关系。 2.存储密度 2.3 已知长度为n的线性表A中的元素是整数,写算法求线性表中值大于item的元素个数。分两种情况编写函数:(1)线性表采用顺序存储;(2)线性表采用单链表存储。 (1)线性表采用顺序存储 #define MAX 1024 typedef int DataType; typedef struct { DataType data[MAX]; int last; } SeqList; int LocateElem (SeqList *L, DataType item) { int i,j=0; for(i=0;i=L-last ;i++) if( L-data[i] item ) j++; return j;} (2)线性表采用单链表存储 typedef int DataType; typedef struct Node { DataType data; struct Node *next; }LinkList; LinkList *locateElem(LinkList *L, DataType item ) { LinkList *p=L-next; int i=0; while ( p ) {if( p-data item) i++; p=p-next;} return i ; } 2.4 已知长度为n的线性表A中的元素是整数,写算法删除线性表中所有值为item的数据元素。分两种情况编写函数:(1)线性表采用顺序存储;(2)线性表采用单链表存储。 (1)线性表采用顺序存储 #define MAX 1024 typedef int DataType; typedef struct { DataType data[MAX]; int last; } SeqList; int LocateElem (SeqList *L, DataType item) { int i=0; While(i=L-last) if( L-data[i] ==item ) {for(j=i+1;j=L-last;j++) L-data[j-1]=L-data[j]; L-last --; } Else i++; } (2)线性表采用单链表存储 typedef int DataType; typedef struct Node { DataType data; struct Node *next; }LinkList; int deleteDupNode(LinkList *L, DataType item) { LinkList *p,*q,*r; q= L; p=L-next; while (p) if (p-data==item) {q-next=p-next; free(p); p=q-next;} else { q=p; p=p-next; } } 2.5 设长度为Max的顺序表L中包含n个整数且递增有序。试写一算法,将x 插入到顺序表的适当位置上,以保持表的有序性,并且分析算法的时间复杂度。 #define MAX 1024 typedef int D

文档评论(0)

1亿VIP精品文档

相关文档