云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数据结构习题集答案(C语言严版)

数据结构习题集答案(C语言严版)

  • 62 次阅读
  • 3 次下载
  • 2026/4/29 15:30:17

Status DeleteAndInsertSub(LinkList &la,LinkList &lb,int i,int j,int len) { } 2.19 解:

Status ListDelete_L(LinkList &L,ElemType mink,ElemType maxk) {

LinkList p,q,prev=NULL; if(mink>maxk)return ERROR; p=L;

LinkList p,q,s,prev=NULL; int k=1;

if(i<0||j<0||len<0) return INFEASIBLE; // 在la表中查找第i个结点 p=la;

while(p&&k

if(!p)return INFEASIBLE; // 在la表中查找第i+len-1个结点 q=p; k=1; while(q&&k

if(!q)return INFEASIBLE;

// 完成删除,注意,i=1的情况需要特殊处理 if(!prev) la=q->next; else prev->next=q->next;

// 将从la中删除的结点插入到lb中 if(j=1){ } else{ }

return OK;

s=lb; }

if(!s)return INFEASIBLE; q->next=s->next; s->next=p; //完成插入

k=1;

while(s&&k

s=s->next; k++; q->next=lb; lb=p; q=p->next; k++; prev=p; p=p->next; k++;

}

2.20 同2.19题条件,试写一高效的算法,删除表中所有值相同的多余元素(使得操作后的线性表中所有元素的值均不相同),同时释放被删结点空间,并分析你的算法的时间复杂度。

解:

void ListDelete_LSameNode(LinkList &L) { } 2.21

解:

// 顺序表的逆置

Status ListOppose_Sq(SqList &L) {

int i; ElemType x;

for(i=0;i

x=L.elem[i];

L.elem[i]=L.elem[L.length-1-i]; LinkList p,q,prev; p=L; prev=p; p=p->next; while(p){ }

prev=p; p=p->next;

if(p&&p->data==prev->data){ }

prev->next=p->next; q=p; p=p->next; free(q);

prev=p; p=p->next;

while(p&&p->data

return OK;

if(p->data<=mink){ } else{ }

prev->next=p->next; q=p; p=p->next; free(q); prev=p; p=p->next;

}

2.22 试写一算法,对单链表实现就地逆置。

解:

// 带头结点的单链表的逆置 Status ListOppose_L(LinkList &L) { } 2.23 解:

// 将合并后的结果放在C表中,并删除B表

Status ListMerge_L(LinkList &A,LinkList &B,LinkList &C) { } 2.24 解:

// 将合并逆置后的结果放在C表中,并删除B表

Status ListMergeOppose_L(LinkList &A,LinkList &B,LinkList &C) {

LinkList pa,pb,qa,qb; pa=A;

LinkList pa,pb,qa,qb; pa=A->next; pb=B->next; C=A;

while(pa&&pb){ }

if(!pa)qb->next=pb; pb=B; free(pb); return OK;

qa=pa;

qb=pb;

pa=pa->next; pb=pb->next; qb->next=qa->next; qa->next=qb; LinkList p,q; p=L; p=p->next; L->next=NULL; while(p){ }

return OK;

q=p; p=p->next; q->next=L->next; L->next=q; }

return OK;

L.elem[L.length-1-i]=x;

} 2.25解:

// 将A、B求交后的结果放在C表中

Status ListCross_Sq(SqList &A,SqList &B,SqList &C) {

int i=0,j=0,k=0;

while(i

if(A.elem[i]

if(A.elem[i]>B.elem[j]) j++;

pb=B; qa=pa; qb=pb;

// 保存pa的前驱指针 // 保存pb的前驱指针

pa=pa->next; pb=pb->next; A->next=NULL; C=A;

while(pa&&pb){ }

while(pa){ }

while(pb){ } pb=B; free(pb); return OK;

qb=pb; pb=pb->next; qb->next=A->next; A->next=qb; qa=pa; pa=pa->next; qa->next=A->next; A->next=qa;

if(pa->datadata){ } else{ }

qb=pb; pb=pb->next;

qb->next=A->next; //将当前最小结点插入A表表头 A->next=qb; qa=pa; pa=pa->next;

qa->next=A->next; //将当前最小结点插入A表表头 A->next=qa;

搜索更多关于: 数据结构习题集答案(C语言严版) 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Status DeleteAndInsertSub(LinkList &la,LinkList &lb,int i,int j,int len) { } 2.19 解: Status ListDelete_L(LinkList &L,ElemType mink,ElemType maxk) { LinkList p,q,prev=NULL; if(mink>maxk)return ERROR; p=L; LinkList p,q,s,prev=NULL; int k=1; if(i<0||j<0||len<0) return INFEASIBLE; // 在la表中查找第i个结点 p=la; while(p&&k

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com