数据结构习题集答案解析清华大学版

Status DeleteAndInsertSub(LinkList &la,LinkList &lb,int i,int j,int len)緘頰垒嚙缨輥榮。 { }

2、17 试写一算法,在无头结点得动态单链表上实现线性表操作Insert(L,i,b),并与在带头结点得动态单链表上实现相同操作得算法进行比较。鸦饼掙歡东窑赎。 2、18试写一算法,实现线性表操作Delete(L,i),并与在带头结点得动态单链表上实现相同操作得算法进行比较。埚孫蔺詿騰語頂。 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、19 已知线性表中得元素以值递增有序排列,并以单链表作存储结构。试写一高效得算法,删除表中所有值大于mink且小于maxk得元素(若表中存在这样得元素),同时释放被删结点空间,并分析您得算法得时间复杂度(注意,mink与maxk就是给定得两个参变量,它们得值可以与表中得元素相同,也可以不同)。

笃噜镉馋販緇濑。 解:

Status ListDelete_L(LinkList &L,ElemType mink,ElemType maxk)达横筚構饷毁賡。 { }

2、20 同2、19题条件,试写一高效得算法,删除表中所有值相同得多余元素(使得操作后得线性表中所有元素得值均不相同),同时释放被删结点空间,并分析您得算法得时间复杂度。诎膚楨櫞袞樁镤。 解:

void ListDelete_LSameNode(LinkList &L) {

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

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

while(p&&p->data

>>展开全文<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4