《数据结构题集》参考答案2线性表

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构题集》参考答案2线性表

第二章线性表

◆2.11②设顺序表L中的数据元素递增有序。

试写一算法,将x插入到L的适当位置上,并保

持该表的有序性。

要求实现下列函数:

void InsertOrderList(SqList &L, ElemType x)

/* 在有序的顺序表 L 中保序插入数据元素 x */

顺序表类型定义如下:

typedef struct {

ElemType *elem;

int length;

int listsize;

} SqList;

void InsertOrderList(SqList &L, ElemType x)

// 在有序的顺序表 L 中保序插入数据元素 x

{

int j,i=L.length-1;

while (x<l.elem[i]&&i>=0) i--;</l.elem[i]&&i>

for (j=L.length-1;j>i;j--)

{

L.elem[j+1]=L.elem[j];

}

L.elem[i+1]=x;

L.length++;

}

◆2.12③设A=(a1,…,am)和B=(b1,…,bn)均为有序顺序表,A'和B'分别为A和B中除去最大共同前缀后的子表(例如,A=(x,y,y,z,x,z),B=(x,y,y,z,y,x,x,z),则两者中最大

的共同前缀为(x,y,y,z),在两表中除去最大共同前缀后

的子表分别为A'=(x,z)和B'=(y,x,x,z))。若A'=B'=空表,则A=B;若A'=空表,而B'≠空表,或者两者均不为空表,且A'的首元小于B'的首元,则AB。试写一个比较A和B大小的算法。(注意:在算法中,不要破坏原表A

和B,也不一定先求得A'和B'才进行比较)。

要求实现下列函数:

char Compare(SqList A, SqList B);

/* 比较顺序表A和B, */

/* 返回'<', 若A<="" p="">

/* '=', 若A=B; */

/* '>', 若A>B */

顺序表类型定义如下:

typedef struct {

ElemType *elem;

int length;

int listsize;

} SqList;

char Compare(SqList A, SqList B)

// 比较顺序表A和B,

// 返回'<', 若A<b;< p="">

// '=', 若A=B;

// '>', 若A>B

{

int i=0,j=0;

while (i<a.length||j<b.length)< p="">

{

if (A.elem[i]!=B.elem[j])

{

if (A.elem[i]<';="" else="" return="">';

}

else

{

i++;

j++;

}

}

if (i==j) return '=';

else

if (i==A.length) return '<';

else return '>';

}

2.13②试写一算法在带头结点的单链表结构上实现线性表操作Locate(L,x)。

实现下列函数:

LinkList Locate(LinkList L, ElemType x);

// If 'x' in the linked list whose head node is pointed // by 'L', then return pointer pointing node 'x',

// otherwise return 'NULL'

单链表类型定义如下:

typedef struct LNode {

ElemType data;

struct LNode *next;

} LNode, *LinkList;

LinkList Locate(LinkList &L, ElemType x)

// If 'x' in the linked list whose head node is pointed // by 'L', then return pointer ha pointing node 'x',

// otherwise return 'NULL'

{

LinkList P;

P=L->next;

while (P!=NULL&&P->data!=x)

{P=P->next;}

return P;

}

2.14②试写一算法在带头结点的单链表结构上实现线性表操作Length(L)。

实现下列函数:

int Length(LinkList L);

// Return the length of the linked list

// whose head node is pointed by 'L'

单链表类型定义如下:

typedef struct LNode{

ElemType data;

struct LNode *next;

} LNode, *LinkList;

int Length(LinkList L)

// Return the length of the linked list

// whose head node is pointed by 'L'

{

int i=0;

LinkList P;

P=L->next;

while (P!=NULL)

{

P=P->next;

i++;

}

return i;

}

相关文档
最新文档