线性表算法题库_数据结构与算法线性表复习习题【6】[1]

数据结构与算法线性表复习习题【6】[1]以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

已知A B和C为三个递增有序的线性表 现要求对A表作如下操作 删去那些既在B表中出现又在C表中出现的元素 试对顺序表编写实现上述操作的算法 并分析你的算法的时间复杂度(注意 题中没有特别指明同一表中的元素值各不相同)

// 在A中删除既在B中出现又在C中出现的元素 结果放在D中

Status ListUnion_Sq(SqList &D SqList &A SqList &B SqList &C)

{

SqList Temp;

InitList_Sq(Temp);

ListCross_L(B C Temp);

ListMinus_L(A Temp D);

}

要求同 题 试对单链表编写算法 请释放A表中的无用结点空间

// 在A中删除既在B中出现又在C中出现的元素 并释放B C

Status ListUnion_L(LinkList &A LinkList &B LinkList &C)

{

ListCross_L(B C);

ListMinus_L(A B);

}

// 求集合A B 结果放在A表中 并删除B表

Status ListMinus_L(LinkList &A LinkList &B)

{

LinkList pa pb qa qb pt;

pa=A;

pb=B;

qa=pa;// 保存pa的前驱指针

qb=pb;// 保存pb的前驱指针

pa=pa >next;

pb=pb >next;

while(pa&&pb){

if(pb >datadata){

pt=pb;

pb=pb >next;

qb >next=pb;

free(pt);

}

else

if(pb >data>pa >data){

qa=pa;

pa=pa >next;

}

else{

pt=pa;

pa=pa >next;

qa >next=pa;

free(pt);

}

}

while(pb){

pt=pb;

pb=pb >next;

qb >next=pb;

free(pt);

}

pb=B;

free(pb);

return OK;

}

假设某个单向循环链表的长度大于 且表中既无头结点也无头指针 已知s为指向链表中某个结点的指针 试编写算法在链表中删除指针s所指结点的前驱结点

// 在单循环链表S中删除S的前驱结点

Status ListDelete_CL(LinkList &S)

{

LinkList p q;

if(S==S >next)return ERROR;

q=S;

p=S >next;

while(p >next!=S){

q=p;

p=p >next;

}

q >next=p >next;

free(p);

return OK;

} lishixinzhi/Article/program/sjjg/201311/23386

分页:123

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值