无头结点单链表的逆置_anyview数据结构习题第二章

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

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

持该表的有序性。

要求实现下列函数:

void InsertOrderList(SqList &L, ElemType

x)

顺序表类型定义如下:

typedef struct {

ElemType

*elem;

int length;

int listsize;

} SqList;

void InsertOrderList(SqList

&L, ElemType x)

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

{

int

i=0,j; if(x>=L.elem[L.length-1])

L.elem[L.length]=x;//如果x大于表最后一个元素

,则直接插到最后面

else{ while(L.elem[i]<=x)

i++; //找到x的插入位置

for(j=L.length-1;j>=i;j--) L.elem[j+1]=L.elem[j] ;

L.elem[i]=x;

}

L.length++; //表长加1

}

◆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);

顺序表类型定义如下:

typedef struct {

ElemType

*elem;

int length;

int listsize;

} SqList;

char Compare(SqList A, SqList B)

{ int pa=A.length,pb=B.length,i=1,j=1;

if(A.elem[0]>B.elem[0]) return

'>'; //直接先由第一个元素判断谁大

if(A.elem[0]

'

else //如果第一个元素相同,则分以下情况

{ if(pa==pb)

{

while(i<=pa-1&&j<=pb-1)

{ if(A.elem[i]>B.elem[j]) return

'>'; //相对应的元素逐个比较

if(A.elem[i]

'

if(A.elem[i]==B.elem[j]) {i++;j++;} //直到末尾都相等,则输出“=”

}

return '=';

}

if(pa

{ while(i<=pa-1&&j<=pb-1)

{ if(A.elem[i]>B.elem[j]) return

'>';

if(A.elem[i]

'

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

{i++;j++;} //元素依然相同,i达到A表表长的限制,跳出

} //则 B表大于A表

return '

}

if(pa>pb)

{ while(i<=pa-1&&j<=pb-1)

{ if(A.elem[i]>B.elem[j]) return

'>';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值